在window的环境下,保存的文本文档会加上三个字符0xEF 0xBB 0xBF的头部,这三个字符可能会影响对文本的读取,形成乱码,在这里记录下如何避免。
首先发现直接保存为ASCII的文本文件是不包含BOM头部的,验证步骤如下:
1.创建ASCII编码的txt文件
2.
#coding=utf-8
import codecs
data=open("xxx.txt").read()
if data[:3]==codecs.BOM_UTF8:
print "contain BOM"
print data
发现ASCII编码的文件头部不含BOM
3.将文件另存为UFT-8的格式,再次运行,可以发现包含BOM头部,输出也出些乱码。
解决方法
#coding=utf-8
import codecs
data=open("xxx.txt").read()
if data[:3]==codecs.BOM_UTF8:
data = data[3:]
print data