1

我正在打印文件的第一行:

with open(path,"r",encoding='utf8') as f:
    for i, l in enumerate(f.readlines()):
        print(bytes(l.rstrip(), encoding='utf8'))

我希望输出 b'1' 但我得到的是:

b'\xef\xbb\xbf1'

这里有什么问题?

我在 Windows 上,我使用记事本 ++ 保存了我的文件。

4

3 回答 3

6

要正确解析 BOM,请使用utf-8-sig

with open(path,"r",encoding='utf-8-sig') as f:
于 2012-06-14T22:35:03.797 回答
2

您会看到Notepad++ 放在文件开头以将其标记为 UTF-8 编码的字节顺序标记 (BOM) 。

于 2012-06-14T22:28:49.033 回答
1

BOM的 UTF-8 表示是字节序列0xEF,0xBB,0xBF。将文本解释为 ISO-8859-1 或 CP1252 的文本编辑器或 Web 浏览器将为此显示字符 。


UTF-8不需要BOM in 。您可以配置记事本++。

于 2012-06-14T22:28:56.333 回答