为什么我的Unicode文本文件的hexdump与我手动输入的字节序列不同



为什么以下内容会导致hexdump中出现如此不同的字节序列?

$ echo -e "u0f67u0fb9u0fa8u0fb3u0fbau0fbcu0fbbu0f83u0f0b" > uni
$ hexdump uni
0000000 bde0 e0a7 b9be bee0 e0a8 b3be bee0 e0ba
0000010 bcbe bee0 e0bb 83be bce0 0a8b
000001c
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE=C
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

区域设置正确设置为:en_US.UTF-8,实际unicode输出正确:ཧྐྵྨླྺྼྻྃ་

我的误解源于我认为我呼应的字符是utf8,而实际上它们是utf16。当查找第一个字符时,utf8显示为

 e0 bd a7

应该是big-endian。因此,为了更改endianes,可以使用-C参数运行hexdump。

相关内容

最新更新