对于Python来说,什么都好,就是编码问题真是让人头疼。当然,明白原理后自然没什么了,可各种命令行窗口、IDE的实现不同,导致此问题更糟糕。
之前使用的时候,应该是把Python的处理方式搞懂了的,但是今天忘了处理UTF-8文件头BOM这件事。
Python问题解决参考:http://blog.csdn.net/lxdcyh/article/details/4018054
先在来讲一下关于检测文件编码。使用的是chardet(点击这里查看)模块。下面这个函数包括了自动检测文件编码,及当文件为UTF-8时,自动去除BOM的问题:
import chardet import codecs """ 返回文件的列表,以unicode的方式保存 """ def readFile(filePath): finput = open(filePath, "r") str = finput.readline() + finput.readline() #在文件中多读取一行是因为,如果一行文字太少,编码检测有可能错误,按自己要求调整 codeType = chardet.detect(str)["encoding"] #检测编码方式 print u"编码是 ", codeType finput.seek(0) #转回到文件开头 if codeType == "UTF-8": bom = codecs.BOM_UTF8[:].decode("utf-8")#考虑去除文件头的BOM content = [line.decode(codeType) if line.decode(codeType)[:1] != bom else line.decode(codeType)[1:] for line in finput] else: content = [line.decode(codeType) for line in finput] finput.close() return content
里面的有几行代码比较多余,只是为了讲个明白,大家可根据自己来更改。