python的字符集小问题,请帮我解释一下

发布于 2022-09-05 15:26:02 字数 614 浏览 31 评论 0

我在python 2.7 shell里面执行

clipboard.png

后来我在Ulipad编辑器写同样的代码,文件是utf-8格式
clipboard.png

提示异常,后来我编码
clipboard.png

这样才能正常显示文字!!

为什么在命令行写的中文unicode就能直接打印出来,而在软件中写的代码,就会出现问题?
请教一下,这怎么解释原因~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

终止放荡 2022-09-12 15:26:02

python2关于中文处理上,在软件和命令行是有不一样的地方,在软件里运行只要print '测试'就行了,具体这个软件是怎么回事我真不清楚,因为我pycharm编辑器里是可以这样输出的。而在命令行print文本的时候会被系统的cmd.exe自动编码成gbk的格式,这个你在命令行的属性里可以看到,所以你直接print unicode编码就会变成中文。但是你在shell直接用ss就会显示出变量的值是unicode编码。而python3就没那么多问题了。

clipboard.png

clipboard.png

垂暮老矣 2022-09-12 15:26:02

我理解是unicode是一个中间状态码,如果你要输出必须要转换成其他编码(如utf8、gbk、ascii

其他编码----decode----> unicode ----encode----> 其他编码

问题的关键,是系统的shell和你Ulipad编辑器默认的字符集不一样:

  • windows系统默认的是gbk,python自动转换成gbk输出没有问题
  • 编辑器环境默认是acsii码,python自动转换成acsii码出错,应为acsii不能表示中文
万人眼中万个我 2022-09-12 15:26:02

你的 shell 跟 那个 UliPad 本身支持的编码不同吧。

print 出来的信息一定是“字节”,不同的环境它们以什么编码去“理解”这些字节是不一样的。如果不匹配,就可能会报错了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文