iconvとodはバイト順序をどのように処理しますか? [閉鎖]

iconvとodはバイト順序をどのように処理しますか? [閉鎖]
echo hello | iconv -f ascii -t utf-16le | od -x

私にビッグエンディアンの結果のように見える結果が生成されます。

0068    0065    006c    006c    006f    000a

utf16leシステム(Osx)では、「le」のない同じ行が生成されます。

echo hello | iconv -f ascii -t utf-16 | od -x

fffe    6800    6500    6c00    6c00    6f00    0a00

od -xはエンディアンを変更しますか?

ベストアンサー1

od何も変わらないようですが、iconvそうです。あなたの出力によると、このシステムはx86-64のUbuntu出力と比較されますutf-16utf-16be

$エコこんにちは| iconv -f ascii -t utf-16le | 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 | iconv -f ascii -t utf-16le
0000000 0068 0065 006c 006c 006f 000a
0000014
$エコこんにちは| iconv -f ascii -t utf-16be | 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 | iconv -f ascii -t utf-16be
0000000 6800 6500 6c00 6c00 6f00 0a00
0000014

od -t x1代わりに、次の出力で呼び出すことができますhd

$エコこんにちは| iconv -f ascii -t utf-16be | iconv -f ascii -t utf-16be
0000000 00 68 00 65 00 6c 00 6c 00 6f 00 0a
0000014

それと同じですが、hdASCII列はありません。

しかし、私のUbuntuはBOMを使用してutf-16をutf-16leにマップします。

$エコこんにちは| iconv -f ascii -t utf-16 | iconv -f ascii -t utf-16
0000000 効果 0068 0065 006c 006c 006f 000a
0000016
$エコこんにちは| iconv -f ascii -t utf-16 | iconv -f ascii -t utf-16
00000000 ff fe 68 00 65 00 6c 00 6c 00 6f 00 0a 00 |..こんにちは。
0000000e

OS Xシステムがなぜ反対方向に構成されているのか興味深い。私はこれの実際の理由がないと思います。おそらく、奇妙なレガシー問題であるか、コンパイル構成エラーかもしれません。この瞬間に言及する文書はありますか?

おすすめ記事