目录
先放总结:
对于报错:SyntaxError: Non-UTF-8 code starting with '\xe6' in file其原因如下
在UTF-8编码的文件里,当文本中文较多时开头会有一个隐藏字符BOM(b'\xef\xbb\xbf')(微软在UTF-8中使用BOM(Byte order mark)是因为这样可以将UTF-8和ASCII等编码明确区分开)
常用解决办法:
1.切片法
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")
2.声明法
import codecs
with open("xx.txt",'r','utf-8-sig') as file:
line = file.readlines()
注意
敲代码时开头最好写明编码方式:# coding=utf-8(告诉python解释器要按照utf-8编码的方式来读取程序,不然及容易报错)