在python中,我使用带有utf-32编码的encode,结果如下
>>> a = u"A"
>>> a.encode("utf-32")
'\xff\xfe\x00\x00A\x00\x00\x00'
>>> len(a.encode("utf-32"))
8长度为8
但是,在此站点http://macchiato.com/unicode/convert.html上,使用UTF-32BE,输出
00 00 00 41长度为4
为什么不等于两个值。
发布于 2017-02-24 15:30:25
正如Biffen在评论中正确指出的那样,Python包含一个BOM (字节顺序标记)。对于UTF-32,这是ff fe 00 00。A本身被编码为41 00 00 00。如果您不需要物料清单,请使用utf-32le。由于您将其与UTF-32BE编码进行比较,因此您还可以在Python语言中使用utf-32be来颠倒字节顺序:
>>> "A".encode("utf-32")
b'\xff\xfe\x00\x00A\x00\x00\x00'
>>> "A".encode("utf-32le")
b'A\x00\x00\x00'
>>> "A".encode("utf-32be")
b'\x00\x00\x00A'https://stackoverflow.com/questions/42431633
复制相似问题