Mic*_*ski 4 python encode utf-8
我正在尝试理解Unicode和所有相关的东西.我制作了一个utf-8.txt文件,显然是用utf-8编码的.它有"Hello world!" 内.继承人我做的事情:
f = open('utf8.txt', mode = 'r', encoding = 'utf8')
f.read()
Run Code Online (Sandbox Code Playgroud)
我得到的是:'\ ufeffHello world!' 前缀来自哪里?
另一个尝试:
f = open('utf8.txt', 'rb')
byte = f.read()
Run Code Online (Sandbox Code Playgroud)
打印字节给出:b'\ xef\xbb\xbfHello world!' 我假设前缀以十六进制形式出现.
byte.decode('utf8')
Run Code Online (Sandbox Code Playgroud)
上面的代码再次给了我:'\ ufeffHello world!'
我究竟做错了什么?如何从utf-8文件中检索文本到python?
感谢您的反馈!
小智 6
你的utf-8.txt编码为utf-8-bom,与utf-8不同.对于utf-8-bom文件,'\ uFEFF'被写入文件的开头.而不是使用encoding = 'utf8',试试encoding = 'utf-8-sig'
f = open('utf8.txt', mode = 'r', encoding = 'utf-8-sig')
print (f.read())
Run Code Online (Sandbox Code Playgroud)