Python中文乱码

1、Setdefaultencoding(reload(sys)是因为Python2.5 初始化后会删除sys.setdefaultencoding 这个方法,我们需要重新载入)

import 

sys 

reload(sys) 

sys.setdefaultencoding('gbk') 

2、操作不同文件的编码格式的文件(例如:建立一个文件test.txt,文件格式用ANSI,内容为: abc中文,用python来读取)

# coding=gbk 

print open("Test.txt").read(),结果:abc中文

把文件格式改成UTF-8,结果:abc涓枃。上面的test.txt我是用Editplus来编辑的,但当我用Windows自带的记事本编辑并存成UTF-8格式时,运行时报错

 UnicodeEncodeError: 'gbk' codec can't encode character u'\ufeff' in position 0: illegal multibyte sequence 

原来,某些软件,如notepad,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。

因此我们在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量。

# coding=gbk 

import codecs 

data = open("Test.txt").read() 

if data[:3] == codecs.BOM_UTF8: 

data = data[3:] 

print data.decode("utf-8") 

结果:abc中文

 

 

 

posted on 2017-07-11 10:55  油条哥  阅读(162)  评论(1编辑  收藏  举报