2

我有一个在命令行上打印中文输出的 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
4

2 回答 2

2

你的系统语言环境是什么? English (United States),例如,控制台使用代码页 437,不支持中文字符。 Chinese (Simplified, PRC)可以将中文打印到控制台。

您可以Region and Language在控制面板 (Windows 7)、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
哈哈
鍝堝搱
于 2013-03-19T06:52:49.547 回答
0

这就是我解决简体中文问题的方法:

  1. 在区域和语言设置下将非 unicode 程序的显示设置为简体中文
  2. 将以下行添加到 python 文件中(我建议先保存备份):

    - - 编码:gbk - -

这将替换您之前的任何编码(在我的情况下为 utf-8)。您的代码中已有的任何 utf-8 字符串都将在 gbk 中重新编码。所以你必须重新输入这些行。

现在在 dos 窗口和 eclipse 中运行将产生正确的字符。我猜对于繁体中文,类似的事情可以通过在Windows设置和big5中使用繁体中文来完成。对它的测试将留给读者作为练习。

于 2013-03-23T13:35:15.760 回答