我在玩unix hexdump工具。我的輸入文件是UTF-8編碼,包含單個字符ñ
,它是十六進制UTF-8中的C3 B1
。hexdump混淆
hexdump test.txt
0000000 b1c3
0000002
咦?這顯示B1 C3
- 與我預期的相反!有人可以解釋嗎?
爲了得到所期望的輸出我做的:
hexdump -C test.txt
00000000 c3 b1 |..|
00000002
我想我明白編碼系統..
我在玩unix hexdump工具。我的輸入文件是UTF-8編碼,包含單個字符ñ
,它是十六進制UTF-8中的C3 B1
。hexdump混淆
hexdump test.txt
0000000 b1c3
0000002
咦?這顯示B1 C3
- 與我預期的相反!有人可以解釋嗎?
爲了得到所期望的輸出我做的:
hexdump -C test.txt
00000000 c3 b1 |..|
00000002
我想我明白編碼系統..
這是因爲hexdump都默認使用16位字,你是一個小運行 - 印第安建築。字節序列b1 c3
因此被解釋爲十六進制字c3b1
。 -C
選項強制hexdump使用字節而不是單詞。
我發現了兩個方法來避免:
hexdump -C file
或
od -tx1 < file
我認爲這是愚蠢,hexdump都決定文件通常16位字小尾數。非常混亂的IMO。
http://en.wikipedia.org/wiki/Endianness – Konerak 2010-05-17 07:56:04