我需要一个将Unicode字符串转换为转义字符(如\ u0230)的工具。
例如
echo ãçé | convert-unicode-tool
\u00e3\u00e7\u00e9
答案 0 :(得分:0)
› echo -n ãçé | perl -C -e'print for map { sprintf "\\u%04x", ord } split //, readline'
\u00e3\u00e7\u00e9
答案 1 :(得分:0)
所有bash方法-
echo ãçé |
while read -n 1 u
do [[ -n "$u" ]] && printf '\\u%04x' "'$u"
done
前导撇号是printf格式/解释指南。
如果数字参数的前导字符是'“'或''',则其值是紧随其后的字符的数字值。如果设置了POSIXLY_CORRECT环境变量,则将忽略所有其余字符;否则,警告例如,“ printf“%d”“ a”在使用ASCII字符集的主机上输出'97',因为'a'的ASCII值为97。
这使我们可以将字符传递给printf以进行数字解释,例如%d或%03o,或此处的%04x。
[[ -n "$u" ]]
是因为存在一个空尾字节,否则将附加为\u0000
。
输出:
$: echo ãçé |
> while read -n 1 u
> do [[ -n "$u" ]] && printf '\\u%04x' "'$u"
> done
\u00e3\u00e7\u00e9
没有空字节检查-
$: echo ãçé | while read -n 1 u; do printf '\\u%04x' "'$u";done
\u00e3\u00e7\u00e9\u0000