类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。在linux平台处理windows上创建的文件时,要注意编码是否是带有bom。

记得在使用php是读取UTF-8 bom格式的文件时出现过乱码的情况,今天使用python读取windows上的一个文件时出现了开头字符是空白的情况,打开文件肉眼却看不到空格有,查看编码格式原来是utf-8-bom格式。

在python下读取带bom的utf-8格式的文件可以用encoding='utf_8_sig'   : 

with open('filename.txt', 'r', encoding='utf_8_sig') as fp:
	print(fp.read())

更多推荐

Python 读取UTF-8-BOM 文件