python的字符集小问题,请帮我解释一下
我在python 2.7 shell里面执行
后来我在Ulipad编辑器写同样的代码,文件是utf-8格式
提示异常,后来我编码
这样才能正常显示文字!!
为什么在命令行写的中文unicode就能直接打印出来,而在软件中写的代码,就会出现问题?
请教一下,这怎么解释原因~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
python2关于中文处理上,在软件和命令行是有不一样的地方,在软件里运行只要print '测试'就行了,具体这个软件是怎么回事我真不清楚,因为我pycharm编辑器里是可以这样输出的。而在命令行print文本的时候会被系统的cmd.exe自动编码成gbk的格式,这个你在命令行的属性里可以看到,所以你直接print unicode编码就会变成中文。但是你在shell直接用ss就会显示出变量的值是unicode编码。而python3就没那么多问题了。
我理解是
unicode
是一个中间状态码,如果你要输出必须要转换成其他编码(如utf8、gbk、ascii
)问题的关键,是系统的shell和你Ulipad编辑器默认的字符集不一样:
gbk
,python自动转换成gbk
输出没有问题acsii
码,python自动转换成acsii
码出错,应为acsii不能表示中文
你的 shell 跟 那个 UliPad 本身支持的编码不同吧。
print
出来的信息一定是“字节”,不同的环境它们以什么编码去“理解”这些字节是不一样的。如果不匹配,就可能会报错了。