UTF-16大端编码,带有字节顺序标记

时间:2017-01-05 02:45:19

标签: python encoding

我在记事本中创建了一个只包含em破折号的文件,并使用Unicode (big endian)编码保存了该文件。在记事本中,这会显示一个短划线。当我打开文件并在Python 3 / IDLE中读取它时如此:

open(file_path, encoding="UTF-16-BE").read()

我明白了:

'\ufeff—'

以字节表示,文件内容为:

b'\xfe\xff \x14'

不应该处理BOM而不显示它吗?我查看了Python的可用编码,其中没有像UTF_16_BE_SIG那样的UTF_8_SIGdb.collection.aggregate([ { $lookup: { ... } }, { $limit: 1 } ]) 。这里发生了什么,我该如何妥善处理?

1 个答案:

答案 0 :(得分:2)

指定UTF-16的字节顺序时,禁用BOM检查。如果您希望编解码器检查并删除BOM,请指定非端编解码器:

open(file_path, encoding="UTF-16").read()