相信绝大多数的新手在刚开始学习Python的时候,都会遇到一些十分类似的错误提示:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
然后我们会去网上找解决办法,通常得到的结果是:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
但是你们真的知道这是为什么吗?有没有自己去深究一下呢?
这里小编简单的说下这个问题
其实Python2.x支持的编码是ascii,而并非是unicode
所以需要在代码中强制的指定代码的编码格式,否则在输出的过程中会出现上述问题
之所以这里要reload,是因为setdefaultencoding函数在被系统调用后被删除了,所以通过import引用进来时其实已经没有了,所以必须reload一次sys模块,这样setdefaultencoding才会为可用,才能在代码里修改解释器当前的字符编码。
不过好在Python也是在不断的进步
在Python3里面,默认的编码已经修改为了unicode,所以这问题基本就避免了~
领取专属 10元无门槛券
私享最新 技术干货