Bash 如何将Unicode字符串转换为Unicode转义序列?
我想输入一个字符串并输出其unicode字符串,如“\uxxx\uxxx” 现在我已经尝试了两种方法,但它们都输出utf-8。我该怎么办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
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'