python 使用utf-16编码和解码
python encode and decode with utf-16
>>>> enbytes = b'\xdf\x81\x9e\xbf"Q\xa37\xd0\x7f\x18\x1d:J\xe2\xa1'
>>>> enbytes.decode('utf-16').encode('utf-16')
b'\xff\xfe\xdf\x81\x9e\xbf"Q\xa37\xd0\x7f\x18\x1d:J\xe2\xa1'
为什么 enbytes
不等于编码字节。如何解决这个问题。
这就是字节顺序标记(BOM),你可以使用特定的字节序来防止添加BOM,所以小字节序:
>>> enbytes.decode('utf-16').encode('utf-16-le')
b'\xdf\x81\x9e\xbf"Q\xa37\xd0\x7f\x18\x1d:J\xe2\xa1'
>>> enbytes == enbytes.decode('utf-16').encode('utf-16-le')
True
>>>> enbytes = b'\xdf\x81\x9e\xbf"Q\xa37\xd0\x7f\x18\x1d:J\xe2\xa1'
>>>> enbytes.decode('utf-16').encode('utf-16')
b'\xff\xfe\xdf\x81\x9e\xbf"Q\xa37\xd0\x7f\x18\x1d:J\xe2\xa1'
为什么 enbytes
不等于编码字节。如何解决这个问题。
这就是字节顺序标记(BOM),你可以使用特定的字节序来防止添加BOM,所以小字节序:
>>> enbytes.decode('utf-16').encode('utf-16-le')
b'\xdf\x81\x9e\xbf"Q\xa37\xd0\x7f\x18\x1d:J\xe2\xa1'
>>> enbytes == enbytes.decode('utf-16').encode('utf-16-le')
True