python编码错误
2017-08-01 14:55 yongchin 阅读(335) 评论(3) 编辑 收藏 举报初学python,遇到的最难忘的坑没有之一。这个问题起码困扰了我一周。在我写了一段代码之后经常遇见这样的报错。
本质原因是我用的python2,在编码流派中python2是比较奇葩的一派,不随大流。所以在Windows上经常会出现这种报错,但是好在python头不是很铁,在最新的python3中被劝回来了,编码已随大流。所以python3在Windows上原则上则不会出现该报错,特殊除外。那么再来说说如果固执的使用python2该怎么解决:
首先这是一种编码错误,windows的cmd采用的是gbk编码,而我们的开发环境是utf-8编码
python的中文编码比较容易采坑,主要有一下几个注意点:
1. 明确读取的是什么编码格式的输入 gb18030,还是utf-8,,如果不是从文件中来,而是代码内的中文字符,最好直接 u'中文',将编码变为 unicode
2. 操作的时候,注意各种字符串的编码方式匹配,可以都转为unicode以统一处理,string.decode('gb18030') 可以把 gb18030编码转换为 unicode编码
3. 输出时,明确最终的输出格式是什么,从而采用正确的 encode 方式进行编码
至于json,在load的时候,注意设定编码方式, json.loads(str, encoding='gb18030') 或者 utf-8
编码encode 解码decode
解决方法:
弄清楚现在是什么编码,要转换成什么编码
一般是先解码,在编码,具体情况具体参考
当我们声明一个数组时,如果有中文,打印出来往往是utf-8编码,这个时候只需要在后面加上.decode('string_escape')即可,就可以打出中文了