我有一个带有文件路径的字符串,其中非 ASCII 字符是十六进制编码的。
例如:
/media/\x444\x430\x439\x43b.txt
我需要使用 busybox 将其转换为
/media/файл.txt
。
我可以使用 ruby 完成此任务:
n = '/media/\x444\x430\x439\x43b.txt'
n.gsub(/\\x\h{3}/){|h| [h[2..-1].to_i(16)].pack('U') }
如何在busybox(版本1.19.4)上执行此操作?
如何在busybox(版本1.19.4)上执行此操作?
将输入重定向到 awk。将字段分隔符设置为空。
在 awk 中编写一个循环,从 1 迭代到 NF,对于每个字符,从输入中提取第 i 个字符。
如果第 i 个字符不是
/
,则 printf
。
管理解析器的状态。如果第 i 个字符是
/
,请将其记在变量中。接下来的 3 个字符是小数,必须将其从字符串转换为数字并累积到另一个变量中。
将这 3 个字符转换为小数后,您将得到一个 UTF-16 字符。现在您必须编写一个函数将 UTF-16 转换为 UTF-8。转换后输出utf-8字符。