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' 的区别)

http://segmentfault.com/q/1010000000370030

posted @ 2014-05-09 10:42  sharer  阅读(219)  评论(0)    收藏  举报