编码格式:
Windows为GBK的编码格式;
linux为utf-8编码;
而通过requests.get()爬取网站得到的response,response.text是Unicode编码,response.content是byte字符串;
那么python怎么在不同的平台之间转换编码格式呢?
python提供的方法很简单,就是encode,decode。非常有效。
使用方法:
第一步:根据平台的编码格式解码,就是让python解释器认识数据
第二步:将解码得到的数据编码按目标平台的编码格式编码。
以python 2.7为例:
例: python2.7字符串是Unicode编码,所以解释器只认识Unicode编码格式的数据
response.text刚好是Unicode编码,所以解释器是认识数据的。所以第一步可以直接省略;
第二步:转换为GBK编码
content = response.content.encode(“GBK”)
如果现在在解释器中打印content,是打不开的,因为解释器会按Unicode编码去打印数据,自然会出现错误;
但现在,如果把content写入文件,文件在Windows中是可以打开的。
如果是linux平台,那么第二步编码为utf-8就行了。
如果是键盘录入的数据呢
在windows平台,使用python2.7, 录入的中文会以每个中文2个字节的长度录入,格式为byte,也就是说,并不是unicode,解释器还不认识录入的数据。那么就要告诉解释器,数据的编码格式。所以要按windows的录入格式解码,如录入s = “黄河”
那么就应该这样解码:s = s.decode(“GBK”).现在s解释器认识了。解释器会把它按Unicode解释。解释器认识数据后,就可以把它转变为 任何你想要转变的格式了。
python 3是utf-8编码,原理都是一样的。先解码让解释器认识,再编码为自己想要的格式。