Unicode
iconv 和 od 如何處理字節序?
echo hello | iconv -f ascii -t utf-16le | od -x
產生在我看來像大端的結果
0068 0065 006c 006c 006f 000a
而沒有’le’的同一行在utf16le系統(Osx)上產生
echo hello | iconv -f ascii -t utf-16 | od -x fffe 6800 6500 6c00 6c00 6f00 0a00
od -x 會改變字節順序嗎?
od
似乎沒有改變任何東西,但iconv
確實如此。根據您的輸出,該系統映射utf-16
到utf-16be
. 與我在 x86-64 上的 Ubuntu 的輸出進行比較:$迴聲你好| iconv -f ascii -t utf-16le | 高畫質 00000000 68 00 65 00 6c 00 6c 00 6f 00 0a 00 | 你好 .. | 0000000c $迴聲你好| iconv -f ascii -t utf-16le | od -x 0000000 0068 0065 006c 006c 006f 000a 0000014 $迴聲你好| iconv -f ascii -t utf-16be | 高畫質 00000000 00 68 00 65 00 6c 00 6c 00 6f 00 0a | .你好。 0000000c $迴聲你好| iconv -f ascii -t utf-16be | od -x 0000000 6800 6500 6c00 6c00 6f00 0a00 0000014
可以呼叫
od -t x1
而不是hd
使用類似的輸出:$迴聲你好| iconv -f ascii -t utf-16be | od -t x1 0000000 00 68 00 65 00 6c 00 6c 00 6f 00 0a 0000014
就像
hd
但沒有 ASCII 列。但是我的 Ubuntu 使用 BOM 將 utf-16 映射到 utf-16le:
$迴聲你好| iconv -f ascii -t utf-16 | od -x 0000000 feff 0068 0065 006c 006c 006f 000a 0000016 $迴聲你好| iconv -f ascii -t utf-16 | 高畫質 00000000 ff fe 68 00 65 00 6c 00 6c 00 6f 00 0a 00 |..你好..| 0000000e
這很有趣,為什麼您的 OS X 系統配置相反。我認為沒有真正的原因;也許這是一些奇怪的遺留或編譯配置錯誤。它是否有提到這一刻的文件?