我正在打印文件的第一行:
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 上,我使用记事本 ++ 保存了我的文件。
我正在打印文件的第一行:
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 上,我使用记事本 ++ 保存了我的文件。
要正确解析 BOM,请使用utf-8-sig:
with open(path,"r",encoding='utf-8-sig') as f:
您会看到Notepad++ 放在文件开头以将其标记为 UTF-8 编码的字节顺序标记 (BOM) 。
BOM的 UTF-8 表示是字节序列0xEF,0xBB,0xBF
。将文本解释为 ISO-8859-1 或 CP1252 的文本编辑器或 Web 浏览器将为此显示字符 。
UTF-8
不需要BOM in 。您可以配置记事本++。