尝试:
codecs.getencoder('hex_codecs')(codecs.getencoder('utf-32')('a')[0])
Python将输出:
('fffe000061000000', 8)
为什么python将0000附加到UTF-32编码的字符串?
感谢。
答案 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-BE
或UTF-32-LE
。