python的乱码问题
1 def get_content(): 2 user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36" 3 headers = { 'User-Agent' : user_agent } 4 url = "http://bj.58.com/" 5 req = urllib2.Request(url, headers = headers) 6 response = urllib2.urlopen(req) 7 the_page = response.read() 8 type = sys.getfilesystemencoding() 9 the_page = the_page.decode("UTF-8").encode(type) 10 print the_page
1、写的代码模块需要指定编码
如果代码没有指定coding,python就默认所有的字符为ASCII码,
ASCII码只支持256个字符,ASCII码不支持中文,所以就报错。
所以要在代码前写上#coding:utf-8或#coding:gbk
建议你的代码统一写成这样:
1 |
#coding:utf-8 |
2 |
import sys |
3 |
reload(sys) |
4 |
sys.setdefaultencoding('utf-8') |
2、python2内部所有编码统一为unicode
unicode可以处理世界上所有语言的字符。
utf-8为unicode的一种实现形式,所以需要在代码前写上#coding:utf-8
3、编码转换
牢记python2内部编码为unicode.
其它的编码decode()为unicode,再编码encode()为你指定的编码,就不会出现乱码。
4、网页采集时
代码指定#coding:utf-8
如果网页的编码为gbk
需要这样处理:
html = html.decode('gbk').encode('utf-8')
5、代码前也可以写#coding:gbk,但也要保证你的代码文件的保存格式为gbk.这个在windos下会出现这样的问题。
6、字典等key或值的汉字问题
#coding:utf-8
dict1 ={1:'python周末培训班',2:'咨询010-68165761 QQ:1465376564'}
print dict1
# 这样输出的没有显示汉字,是显示汉字的其它编码
dict2 ={1:'python视频培训班',2:'咨询010-68165761 QQ:1465376564'}
for key in dict2:
print dict2[key]
7、unicode的汉字编码写到文本文件中
需要根据文本文件的编码进行转换
可以encode('utf-8')或encode('gbk')
总结:凡是报错信息中出现的错误包含“ASCII”,就是没有指定汉字编码的问题。
参考资料
1、 http://bbs3.chinaunix.net/thread-1389703-1-2.html
2、 Python的中文处理及其它
http://www.go4pro.org/?p=38
3、 Python处理中文的时候的一些小技巧
http://cocre.com/?p=461
4、 Unicode In Python, Completely Demystified. Kumar McMillan
http://farmdev.com/talks/unicode
5、 python中文处理好方法
http://www.okpython.com/bbs/viewthread.php?tid=311
6、 Python的中文处理
http://hi.baidu.com/mrsz/blog/item/7812a5018c2cf2031d9583d2.html
7、 UnicodeDecodeError
http://wiki.python.org/moin/UnicodeDecodeError
8、 UnicodeEncodeError
http://wiki.python.org/moin/UnicodeEncodeError
9、 如何处理python编码转换时的UnicodeDecodeError异常
http://blog.chinaunix.net/u/8873/showart_1009737.html
10、codecs — Codec registry and base classes
http://docs.python.org/library/codecs.html
11、python 中文乱码 问题深入分析
http://blog.csdn.net/kiki113/article/details/4062063
12、python新手必碰到的问题---encode与decode,中文乱码[转]
http://www.51testing.com/?uid-524463-action-viewspace-itemid-817888
13、Python 编码和 Unicode(深入理解 python 编码的文章,推荐阅读)
http://blog.jobbole.com/50345/
14、关于python2中的一个编码问题(u'\xe5\xb0\x8f\xe4\xb8\x89' 与 '\xe5\xb0\x8f\xe4\xb8\x89' 的区别)
浙公网安备 33010602011771号