1.获取网站中文乱码

解决中文乱码问题_第1张图片

在获取网页源码,声明r的编码方式r.encoding

2.非法字符抛出异常

将某个字符从gbk解码为unicode,str.decode('gbk')
unicodeDecodeError:'Gbk' codec can't decode byte in position .....
这是由于混用了多种编码,出现非法字符,可以采用str.decode('GBK','ingore')
decode原型:decode([encoding],[error=''strict])
第二个参数:
(1)ingore忽略非法字符,显示有效字符
(2)replace使用符号代替非法字符
(3)xmlcharreplace使用xml字符引用代替非法字符

3.网页使用gzip压缩

网页源码使用的utf-8编码,获取的中文部分全部乱码,这是使用了gzip压缩必须先解压,使用r.content会自动解压gzip和deflate传输编码响应数据
chardet.detect(r.content)返回一个字典,编码方式和confidence精确度。
总括:首先使用r.content解压gzip,然后使用charset找到该字符串的编码方式,最后把字符串解码unicode,

4.读写文件的中文乱码

在读取文件时声明编码方式。

解决中文乱码问题

写文件时注明文件编码

解决中文乱码问题_第2张图片
对于json文件:
解决中文乱码问题_第3张图片
默认unicode处理
解决中文乱码问题
如果希望显示中文,
解决中文乱码问题_第4张图片
解决中文乱码问题