以下是关于Python 中文乱码问题的分析,通过建立文件,以用文件中的python去读取,以及相关代码示例,以下的文章就是对Python 中文乱码的解决方案,以下是文章的具体介绍,望你会有所收获。
建立一个文件test.txt,文件格式用ANSI,内容为:abc中文用python来读取
- # coding=gbk
- print open("Test.txt").read()
结果:abc中文把文件格式改成UTF-8这里需要解码:
- # coding=gbk
- import codecs
- print open("Test.txt").read().decode("utf-8")
结果:abc中文上面的test.txt我是用Editplus来编辑的,但当我用Windows自带的记事本编辑并存成UTF-8格式时,运行时报错:
- Traceback (most recent call last):
- File "ChineseTest.py", line 3, in
- print open("Test.txt").read().decode("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:
- datadata = data[3:]
- print data.decode("utf-8")
结果:abc中文
【编辑推荐】