我正在寻找一个简单的脚本(最好是在bash中)来转换为Unicode字符串,例如:
<U0025><U0059><U002D><U0025><U0062><U002D><U0025><U0064><U0020><U0020><U0025><U0054>
这是在区域设置定义中使用的格式。
答案 0 :(得分: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>")"
答案 1 :(得分: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'"'
答案 2 :(得分:1)
到utf8:
perl -pCO -e 's/<U(.*?)>/chr hex $1/eg'
备份:
perl -pCI -e 's/(.)/sprintf"<U%04X>",ord $1/ge'