python读文件出现中文乱码
2017-10-19 21:31
288 查看
最近开始处理中文文本,读取文件有时候会出现乱码。原因:编码和解码方式不一样。
所以,解决这个问题的方法就是正确地解码,问题拆解为:1、弄清楚待查看文件的编码方式;2、解码。
即:
1、查看文件编码方式:
2、编码类型转换
python默认使用unicode字符集,默认编码方式utf-8.
附录A:
windows文件默认编码方式与地域有关:微软为了适应世界上不同地区用户的文化背景和生活习惯,在Windows中设计了区域(Locale)设置的功能。每个Locale代表了某个国家或地区的一组设定,包括字符集,数字、货币、时间和日期的格式等。Windows用一个4字节32位二进制值给Locale编号,记作LCID(Locale ID)。它的高16位表示字符的排序方法,一般为0。在它的低16位中,低10位代表某种语言,高4位指定该语言适用的地区。如中文在中国大陆地区和台湾地区有简体和繁体的区分,它们的低10位相同而高4位不同。
Linux文件的默认编码方式可以在终端执行locale命令,查看输出结果中 LC_CTYPE 对应的内容。
附录B:
1981,中国国家标准总局发布GB2312字符集(16位)。
1993 ,国际标准组织发布unicode 1.1字符集(unicode字符集有多个编码方式,分别是UTF-8,UTF-16,UTF-32和UTF-7。)。
中国国家标准总局发布GB13000.1-93字符集(16位)。扩充GB2312字符集=>GBK(guo biao kuo)字符集(16位)。
就包含字符来说: GBK = GB2312 +繁体中文+1981年之后简化的简体中文
就包含的中文字符而言:GBK= Unicode 1.1 + GB13000.1-93
所以,解决这个问题的方法就是正确地解码,问题拆解为:1、弄清楚待查看文件的编码方式;2、解码。
即:
1、查看文件编码方式:
import chardet fobj=open(fname,'r') data=fobj.read() print chardet.detect(data)['encoding']
2、编码类型转换
python默认使用unicode字符集,默认编码方式utf-8.
str.decode('gbk') #将gbk编码的字符串转换成unicode编码 str.encode('gbk') #将unicode编码的字符串转换成gbk编码
附录A:
windows文件默认编码方式与地域有关:微软为了适应世界上不同地区用户的文化背景和生活习惯,在Windows中设计了区域(Locale)设置的功能。每个Locale代表了某个国家或地区的一组设定,包括字符集,数字、货币、时间和日期的格式等。Windows用一个4字节32位二进制值给Locale编号,记作LCID(Locale ID)。它的高16位表示字符的排序方法,一般为0。在它的低16位中,低10位代表某种语言,高4位指定该语言适用的地区。如中文在中国大陆地区和台湾地区有简体和繁体的区分,它们的低10位相同而高4位不同。
Linux文件的默认编码方式可以在终端执行locale命令,查看输出结果中 LC_CTYPE 对应的内容。
附录B:
1981,中国国家标准总局发布GB2312字符集(16位)。
1993 ,国际标准组织发布unicode 1.1字符集(unicode字符集有多个编码方式,分别是UTF-8,UTF-16,UTF-32和UTF-7。)。
中国国家标准总局发布GB13000.1-93字符集(16位)。扩充GB2312字符集=>GBK(guo biao kuo)字符集(16位)。
就包含字符来说: GBK = GB2312 +繁体中文+1981年之后简化的简体中文
就包含的中文字符而言:GBK= Unicode 1.1 + GB13000.1-93
相关文章推荐
- js文件中的中文提示信息发到jsp中出现乱码解决步骤
- python文件读写出现乱码总结
- 将字典直接写入文件,出现中文乱码问题
- nodejs读取本地中文json文件出现乱码解决方法
- C#读取中文文件出现乱码的解决方法
- 解决JS外部文件中文注释出现乱码问题
- python使用requests爬取网页,遇到中文出现遇到中文出现乱码的编码问题及解决乱码的编码问题及解决
- 将字典直接写入文件,出现中文乱码问题
- spring boot,用@value获取application.properties文件的中文,出现乱码
- Nio 读取UTF-8文件出现中文乱码
- Qt中QFtp获取带有中文的文件名称出现乱码的解决方法
- 【Python】遍历某目录下的所有文件夹与文件的路径、输出中文乱码问题
- navicat导入mysql的sql文件出现中文乱码
- 使用Unicode字符集时用CFile把中文写入txt文件再用记事本打开出现乱码的问题
- Myeclipse出现 java文件中文乱码问题
- mysql5导入sql文件,中文出现乱码的解决办法
- 引入js文件时出现中文乱码
- 文件下载出现中文乱码问题
- C语言文件输入输出读取中文TXT文件出现乱码
- Python下载文件时出现乱码的解决方法之一:Content-Encoding: gzip