Почему python добавляет 0000 к каждому символу в кодировке UTF-32? - PullRequest
2 голосов
/ 13 декабря 2011

Попробуйте:

codecs.getencoder('hex_codecs')(codecs.getencoder('utf-32')('a')[0])

Python выведет:

('fffe000061000000', 8)

Почему Python добавляет 0000 к кодированной строке UTF-32?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Это не так.61000000 - это кодировка UTF-32 (с прямым порядком байтов) для U + 0061, LATIN SMALL LETTER A. 6100 - кодировка UTF-16 (с прямым порядком байтов), а 61 - кодировка UTF-8.кодирование.

1 голос
/ 13 декабря 2011

Это просто порядок байтов в обратном (младшем) порядке, чем вы можете ожидать. То же самое в PHP:

> bin2hex(iconv('ASCII', 'UTF-32', 'a'));
0000feff00000061

0000feff - это спецификация UTF-32, 00000061 - это "a".

UTF-32 по умолчанию «естественный порядок байтов» . Если вы хотите что-то конкретное, используйте UTF-32-BE или UTF-32-LE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...