首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果你学了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
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券