【问题标题】:UTF-16 big endian encoding with a byte-order mark带有字节顺序标记的 UTF-16 大端编码
【发布时间】:2017-01-05 02:45:18
【问题描述】:

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

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

我明白了:

'\ufeff—'

以字节表示,文件内容如下:

b'\xfe\xff \x14'

它不应该处理 BOM 而不显示它吗?我查看了 Python 的可用编码,其中没有像 UTF_8_SIG 那样的 UTF_16_BE_SIG。这是怎么回事,我该如何正确处理?

【问题讨论】:

标签: python encoding


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-06-23
    • 2020-06-20
    • 1970-01-01
    • 2019-08-16
    • 2011-07-13
    • 1970-01-01
    • 2014-06-16
    • 2013-08-10
    相关资源
    最近更新 更多