Python在dos窗口中没有正确显示简体中文

时间:2013-03-19 01:37:49

标签: python cmd

我有一个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

2 个答案:

答案 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)

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

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

    - - 编码:gbk - -

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

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