我正在寻找一个简单的脚本(最好在 bash 中)来转换为 Unicode 字符串,例如:
<U0025><U0059><U002D><U0025><U0062><U002D><U0025><U0064><U0020><U0020><U0025><U0054>
例如,这是在语言环境定义中使用的格式。
假设输入脚本位于名为 的文件中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>")"
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'"'
转为 utf8:
perl -pCO -e 's/<U(.*?)>/chr hex $1/eg'
后退:
perl -pCI -e 's/(.)/sprintf"<U%04X>",ord $1/ge'