相信很多人跟我一样 在用python处理一些字符串的时候遇到过这样的问题:(csdn问题…图片上的网址请自行忽略)
然后遇到这种问题了之后左改右改发现依然有这个问题
…
……
………
但是最后,仔细阅读了python的官方文档在内的多处网站后发现
还有print sys.getdefaultencoding() 获取系统默认编码这一说!…
对于windows下的默认编码好像都是ascii(?这个没经过验证)
因为默认是ascii的原因 字符串在执行下面这个例子是就会报UnicodeDecodeError
#-*- encoding:utf-8 -*-
s = '你好 中文'
s.encode('utf-8')
原因是因为系统会在执行decode('utf-8')之前加入默认的解码 其实就变成了下面的语句
#-*- encoding:utf-8 -*-
s = '你好 中文'
s.decode('ascii').encode('utf-8')
解决方法就是让他默认执行的decode('ascii')执行为decode('utf-8')
有get方法自然也可能有set方法 但是经过测试sys.setdefaultencoding('utf-8')却不存在
这个原因是import 并不是sys的第一次导入语句 只是对sys的一个引用(文章不是讲解import的不做过多解释)
所以最终找到解决方法就是在程序开头(至少要在报错语句前面 但是越早的话出现问题的可能性越小)加入如下语句:
#-*- encoding:utf-8 -*-
import sys #reload()之前必须要引入模块
reload(sys)
sys.setdefaultencoding('utf-8')
到此在写的程序中没有问题的情况下无故报UnicodeDecodeError错误的问题就已经解决了