Wie geht Iconv mit der Byte-Reihenfolge um?

Wie geht Iconv mit der Byte-Reihenfolge um?
echo hello | iconv -f ascii -t utf-16le | od -x

erzeugt ein Ergebnis, das mir wie ein Big-Endian-Ergebnis erscheint

0068    0065    006c    006c    006f    000a

während die gleiche Zeile ohne das leauf einem utf16le-System (OS X)

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

fffe    6800    6500    6c00    6c00    6f00    0a00

Ändert od -xsich die Byte-Reihenfolge?

Antwort1

$ echo hello | iconv -f ascii -t utf-16le | hexdump -C
00000000  68 00 65 00 6c 00 6c 00  6f 00 0a 00              |h.e.l.l.o...|
$ echo hello | iconv -f ascii -t utf-16le | od -t x1
0000000 68 00 65 00 6c 00 6c 00 6f 00 0a 00

Die Frage ist, wie 'od' mit der Byte-Reihenfolge umgeht. Wenn Sie es auffordern, anzuzeigenEinheiten, die größer als ein einzelnes Byte sind( -xzeigt 16-Bit-Wörter an), wird standardmäßig die native Einstellung für das System verwendet, auf dem es ausgeführt wird.

Ihr macOS läuft wahrscheinlich auf einer Intel x86_64-CPU mit Little-Endian-Prinzip, was bedeutet, dass Bytes {0x68, 0x00}tatsächlich die 16-Bit-Zahl darstellen 0x0068, wenn sie von „od“ dekodiert werden.

verwandte Informationen