0

次の例では、16 進ダンプのバイト シーケンスがこのように異なるのはなぜですか?

$ echo -e "\u0f67\u0fb9\u0fa8\u0fb3\u0fba\u0fbc\u0fbb\u0f83\u0f0b" > 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 出力は正しいです: ཧྐྵྨླྺྼྻྃ་</p>

4

1 に答える 1

1

私の誤解は、実際には utf16 であるのに、エコーした文字が utf8 であると信じていたことに起因しています。最初の文字を検索すると、utf8 は次のように表示されます 。

 e0 bd a7

これはビッグエンディアンでなければなりません。そのため、エンディアンを変更するには、hexdump を -C パラメータで実行できます。

于 2013-12-13T17:23:52.760 に答える