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