为什么python会将0000附加到每个UTF-32编码字符?

时间:2011-12-13 06:58:57

标签: python unicode

尝试:

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

Python将输出:

('fffe000061000000', 8)

为什么python将0000附加到UTF-32编码的字符串?

感谢。

2 个答案:

答案 0 :(得分:2)

没有。 61000000是U + 0061(LATIN SMALL LETTER A)的(little-endian)UTF-32编码。6100将是(little-endian)UTF-16编码,61将是UTF-8编码。

答案 1 :(得分:1)

它只是以相反的(小端)顺序排序字节,而不是你预期的。在PHP中也一样:

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

0000feff是UTF-32 BOM,00000061是“a”。

UTF-32 defaults to "natural endianness"。如果您需要特定内容,请使用UTF-32-BEUTF-32-LE