python кодировать и декодировать с помощью utf-16 - PullRequest
0 голосов
/ 20 апреля 2020
>>>> 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 не равно байтам кодирования. Как это исправить.

1 Ответ

3 голосов
/ 20 апреля 2020

Это метка порядка байтов (BOM), вы можете просто использовать указатель c endianess, чтобы предотвратить добавление BOM, поэтому little endian:

>>> 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
...