python解码后为什么会乱码
这篇文章主要介绍python解码后为什么会乱码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
字符串在Python内部的表示是unicode编码,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘utf-8’),表示将unicode编码的字符串str2转换成utf-8编码。
代码如下:
#!/usr/bin/envpython#-*-coding:utf-8-*-#author:xulinjietime:2017/10/22importurllib2request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')RES=urllib2.urlopen(request).read()RES=RES.decode('gb2312').encode('utf-8')//解决乱码wfile=open(r'./1.html',r'wb')wfile.write(RES)wfile.close()printRES
如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断,
isinstance(s, unicode)#用来判断是否为unicode。
最终可靠代码:
#!/usr/bin/envpython#-*-coding:utf-8-*-#author:xulinjietime:2017/10/22importurllib2request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')RES=urllib2.urlopen(request).read()ifisinstance(RES,unicode):RES=RES.encode('utf-8')else:RES=RES.decode('gb2312').encode('utf-8')wfile=open(r'./1.html',r'wb')wfile.write(RES)wfile.close()printRES
以上是python解码后为什么会乱码的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。