python response 中文乱码问题

Python014

python response 中文乱码问题,第1张

获得response.text有如下类似的乱码

解决方法有两种:

第一种:

apparent_encoding方法是requests库利用chardet对字节流编码进行了猜测。一般来说使用这种方法,大部分网页的中文乱码都会恢复。如果还是不行,那就试试第二种方法。

第二种:

从网页格式中获得网页内容的编码方式(一般content-type字段会出现在HTML的header的头几行)。

如果直接拿来用,会报错

所以需要给decode加上第二个参数,decode([encoding], [errors='strict']), 第二个参数设置为ignore,则会忽略非法字符。

这样就能获得正确的中文内容了。

练习网址 https://news.mydrivers.com/1/628/628585.htm

由于python默认以ASCII编码,所以不支持中文。所以我们需要在代码前面写上“#_*_ coding:utf-8 _*_”或者#coding=utf-8.当然,如

果你代码中没有中文,就不需要加上了。

还有一个原因,由于python所运行的操作系统决定的,windows默认的编码方式是GBK编码,所以这也是一个导致中文乱码的原因之

一。

建议是不管你用什么,先在代码前面加上这一串,一定不会出现问题。

推荐学习《Python教程》。

乱码原因:

因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。

解决方法:

在控制台打印的地方用一个转码就ok了,打印的时候这么写:

print myname.decode('UTF-8').encode('GBK')

比较通用的方法应该是:

import sys

type = sys.getfilesystemencoding()

print myname.decode('UTF-8').encode(type)