Bash 如何将Unicode字符串转换为Unicode转义序列?

Bash 如何将Unicode字符串转换为Unicode转义序列?,bash,Bash,我想输入一个字符串并输出其unicode字符串,如“\uxxx\uxxx” 现在我已经尝试了两种方法,但它们都输出utf-8。我该怎么办 printf”文" | hextump-e“'X”' #8796E6 printf“文“| xxd-pu #e69687 表单\uxxx的文字对应于UTF-16编码。因此,您必须先将字符串转换为该编码,然后再卸载它 转换为UTF-16后,您可以将转储文件分成4个字节的组,并使用sed对转储文件进行后期处理,以插入前导的\u。这里我们使用od而不是xdd,因为o

我想输入一个字符串并输出其unicode字符串,如“\uxxx\uxxx”

现在我已经尝试了两种方法,但它们都输出utf-8。我该怎么办

printf”文" | hextump-e“'X”'
#8796E6
printf“文“| xxd-pu
#e69687

表单
\uxxx
的文字对应于UTF-16编码。因此,您必须先将字符串转换为该编码,然后再卸载它

转换为UTF-16后,您可以将转储文件分成4个字节的组,并使用
sed
对转储文件进行后期处理,以插入前导的
\u
。这里我们使用
od
而不是
xdd
,因为
od
通常是预先安装的。请注意字节顺序/尾数的问题

printf '文' | iconv -t UTF16LE | od -t x2 -An -v | sed 's/ /\\u/g'
或更长但不太粗糙且与平台无关(
od
默认为系统端)


iconv命令用于将一种编码中的某些文本转换为另一种编码。
iconv选项-f从编码-t到编码输入文件-o输出文件
请检查url好!它解决了我的问题,谢谢。谢谢!我正在使用
printf'文字' | iconv-t UTF16BE | od-t x2-An-v | sed's//\\u/g'
获取unicode字符串。@连生很高兴我能提供帮助。请注意,我犯了一个错误。输出编码应该是UTF16LE而不是UTF16BE,因为
od
交换了尾数。我编辑了答案,以便
\u1234
中的字节不再被交换为
\u3412
printf '文' | iconv -t UTF16BE | od -t x2 -An -v --endian=big | sed 's/ /\\u/g'