我有一个python脚本,可以在命令行上打印中文输出。它在日食中工作正常。但是,当我在dos窗口中运行它时会打印出来吗? (问号)和垃圾字符。可能是因为big-5 vs 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
答案 0 :(得分:2)
您的系统区域设置是什么?例如,English (United States)
使用代码页437作为控制台,它不支持中文字符。 Chinese (Simplified, PRC)
可以将中文打印到控制台。
您可以在控制面板(Windows 7),Region and Language
标签中更改Administrative
中的设置并重新启动。之后,将 Unicode 中文字符串打印到控制台将起作用。您甚至可以输入中文,因为IME将可用。
更改系统区域设置只会影响控制台和非Unicode程序。大多数现代课程都不会注意到。
编辑:使用中国PRC区域并在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
哈哈
鍝堝搱
答案 1 :(得分:0)
这就是我解决简体中文问题的方法:
将以下行添加到python文件中(我建议先保存备份):
这取代了之前的任何编码(在我的情况下是utf-8)。 代码中已有的任何utf-8字符串都将在gbk中重新编码。所以你必须重新输入这些行。
现在在dos窗口中运行并且eclipse将产生正确的字符。 我猜测对于繁体中文,在Windows设置和big5中使用繁体中文可以做类似的事情。对它的测试将留给读者练习。