使用 busybox 将十六进制 UTF 代码的字符串转换为字符

问题描述 投票:0回答:1

我有一个带有文件路径的字符串,其中非 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)上执行此操作?

shell busybox string-conversion
1个回答
0
投票

如何在busybox(版本1.19.4)上执行此操作?

将输入重定向到 awk。将字段分隔符设置为空。

在 awk 中编写一个循环,从 1 迭代到 NF,对于每个字符,从输入中提取第 i 个字符。

如果第 i 个字符不是

/
,则
printf

管理解析器的状态。如果第 i 个字符是

/
,请将其记在变量中。接下来的 3 个字符是小数,必须将其从字符串转换为数字并累积到另一个变量中。

将这 3 个字符转换为小数后,您将得到一个 UTF-16 字符。现在您必须编写一个函数将 UTF-16 转换为 UTF-8。转换后输出utf-8字符。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.