python分类总结——编码那些事

“UnicodeEncodeError:'ascii' codec can't encode characters in position 0-1: ordinal notin range(128)”

这句提示估计都经常见到,具体原因下面慢慢分析。

不爱废话,精简总结

首先弄清楚decode和encode的作用,这两者肯定跟中间编码unicode有关。

我们把"de"想成后退,"en"想成前进。退一步unicode,进一步其他code,分析得蹩脚,但是好记。

str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。   
str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

括号里总是其他code

字符串格式:如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。
python的默认编码是ascii

isinstance(s,unicode)#用来判断是否为unicode

改变默认编码:

import sys

reload(sys)
sys.setdefaultencoding('utf-8')

能解决大部分问题,包括开头的问题。

s=u"中文"——这样就是unicode编码格式,来一剂治百病良药

#良药!!!!! 
#coding=utf-8  
s="中文"  
  
if isinstance(s, unicode):  
#s=u"中文"  
    print s.encode('gb2312')  
else:  
#s="中文"  
    print s.decode('utf-8').encode('gb2312')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容