常用的编辑器,例如notepad,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。 因此在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量:
[whj@localhost Python]$ vi readline.py
1 #!/usr/bin/python
2 import codecs
3
4 f = open("./Text.txt", "r");
5
6 while True:
7 line = f.readline()
8 if line[:3] == codecs.BOM_UTF8:
9 line = line[3:]
10 if line:
11 print line.decode("utf-8"),
12 else:
13
break
14
15 print
16 print
17 print
18 f.seek(0,0)
19
20 for str in f:
21 if str[:3] == codecs.BOM_UTF8:
22 str = str[3:]
23 print str.decode('utf-8'),
24
25 f.close()