Python在DOS窗口中未正确显示简体中文
我有一个Python脚本,可以在命令行上打印中文输出。在Eclipse里运行得很好。但是,当我在DOS窗口里运行时,它却显示问号(?)和一些乱码。这可能是因为编码问题,比如big-5和gb编码的区别吗?如果是的话,我该怎么控制它呢?
顺便说一下,我已经安装了亚洲字符集,所以在Eclipse里可以正常工作。
补充一下:通过结合使用chcp、encode('utf-8')和设置非Unicode处理程序,现在我可以看到字符了,但简单的打印操作却导致了一个异常:
chcp 65001
Active code page: 65001
Z:\src>c:\Python27\python.exe mobTest.py
Traceback (most recent call last):
File "mobTest.py", line 94, in <module>
print u'哈哈'.encode('utf-8')
IOError: [Errno 13] Permission denied
2 个回答
这是我解决简体中文问题的方法:
- 在区域和语言设置中,把非Unicode程序的显示设置为简体中文。
在你的Python文件中添加以下这一行(我建议先备份一下文件):
-- coding: gbk --
这行代码会替换掉你之前的编码设置(我之前用的是utf-8)。你代码里已经存在的utf-8字符串会被重新编码成gbk。所以你需要重新输入那些行。
现在在DOS窗口和Eclipse中运行时,就能显示正确的字符了。 我猜对于繁体中文,可以通过在Windows设置中选择繁体中文和big5来做类似的操作。具体测试留给读者自己去尝试。
你的系统语言设置是什么?比如说,English (United States)
(美国英语)使用的是437编码,这种编码不支持中文字符。而如果你设置成Chinese (Simplified, PRC)
(简体中文,中华人民共和国),那么就可以在控制台上打印中文了。
你可以在控制面板的区域和语言
设置中更改这个选项(在Windows 7中),找到管理
选项卡,然后重启电脑。这样一来,你就可以在控制台上打印Unicode格式的中文字符串了。你甚至可以直接输入中文,因为会有输入法可用。
更改系统语言设置只会影响控制台和一些不支持Unicode的程序。大多数现代程序不会受到影响。
编辑:以下是一个使用中国大陆地区设置并在Windows控制台中运行的示例:
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'哈哈'
哈哈
>>> import sys
>>> sys.stdout.encoding
'cp936'
这是一个使用UTF-8编码的示例脚本。确保在保存源代码时选择UTF-8编码,这在#coding
注释中有说明:
# coding: utf-8
print u'哈哈'
print '哈哈' # this will be UTF-8 encoded, and NOT work
执行结果:
C:\>python x.py
哈哈
鍝堝搱