1

我正在寻找一个简单的脚本(最好在 bash 中)来转换为 Unicode 字符串,例如:

<U0025><U0059><U002D><U0025><U0062><U002D><U0025><U0064><U0020><U0020><U0025><U0054>

例如,这是在语言环境定义中使用的格式。

4

3 回答 3

3

假设输入脚本位于名为 的文件中input

printf "$(sed 's/<U\(....\)>/\\u\1/g' input)"

sed脚本用于更改所有格式<U0025>\u0025然后printf用于解释\u0025.

或者,如果输入不在文件中:

printf "$(sed 's/<U\(....\)>/\\u\1/g' <<< $input)"

或者:

printf "$(sed 's/<U\(....\)>/\\u\1/g' <<< "<U0025><U0059><U002D><U0025><U0062><U002D><U0025><U0064><U0020><U0020><U0025><U0054>")"
于 2013-06-06T12:15:27.783 回答
2
STR=$(echo "<U0025><U0059><U002D><U0025><U0062><U002D><U0025><U0064><U0020><U0020><U0025><U0054>" | sed 's/<U/\\u/g; s/>//g')
printf $STR

如果您的 printf 在您的 shell/os 上不支持 unicode,请尝试使用 python:

python -c 'print u"'$STR'"'
于 2013-06-06T12:17:16.180 回答
1

Perl 解决方案:

转为 utf8:

perl -pCO -e 's/<U(.*?)>/chr hex $1/eg'

后退:

perl -pCI -e 's/(.)/sprintf"<U%04X>",ord $1/ge'
于 2013-06-06T12:20:24.510 回答