关于 python2 在不同执行工具下的中文乱码问题

2019-03-31 22:04:24 +08:00
 oldbird

python2.7.14 32bit 在 IDLE (已设置文件默认编码为 utf-8 )中编写 py 文件如下:

#coding:utf-8

a="中文"

print a

b=a.decode('utf-8')

print b

c=b.encode('gbk')

print c

F5 运行后,3 个均顺利打出,无乱码。

在 CMD 里运行,分别打印为

?腑鏂?

?形?

?形?

cmd 的编码是 cp936,查了说就是 gbk。

在 wingide 里运行,打印出

中文

中文

XXXX #四个黑色斜方块,里面是问号

在 pyscripter 里运行,打印出

涓枃

中文

中文

在 vscode 里运行,打印出

涓枃

涓枃

中文

为什么会有这些不同? 怎么做到统一? 谢谢

1840 次点击
所在节点    Python
8 条回复
ClutchBear
2019-03-31 23:09:43 +08:00
所以不用 cmd 就是了.
orangeade
2019-03-31 23:12:57 +08:00
别用 Python2 了,明天就不支持了
orangeade
2019-03-31 23:13:27 +08:00
@orangeade 明天 -> 明年 ……
silkriver
2019-03-31 23:18:38 +08:00
powershell 用 utf-8,cmd 用 gbk,你这些不同都只是由于这一点
ysc3839
2019-03-31 23:24:45 +08:00
```
> chcp
活动代码页: 936

> py -2 test.py
涓枃
中文
中文
```
我这里 cmd 的情况是这样的。
Sylv
2019-04-01 00:25:41 +08:00
相关参考:
/t/163786
tomczhen
2019-04-01 00:49:42 +08:00
不显示乱码的前提除了 Python 支持编码之外,如果是在终端中显示,也需要终端有编码支持才行吧。
no1xsyzy
2019-04-01 13:06:55 +08:00
简单地说:
字 gbk utf-8
中 D6D0 E4B8AD
文 CEC4 E69687
腑 B8AD E88591
鏂 E696 E98F82
形 D0CE E5BDA2
涓 E4B8 E6B693
枃 9687 E69E83

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/550615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX