转换Unicode的简单脚本

时间:2013-06-06 12:08:16

标签: bash unicode

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

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

这是在区域设置定义中使用的格式。

3 个答案:

答案 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)

Perl解决方案:

到utf8:

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

备份:

perl -pCI -e 's/(.)/sprintf"<U%04X>",ord $1/ge'