如果你学了Python的话,这三行代码没见过算我输

相信绝大多数的新手在刚开始学习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,所以这问题基本就避免了~

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180124A0DEMU00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区