使用python

时间:2017-03-06 16:04:02

标签: python windows python-3.x unicode console

我使用python库向Windows控制台输出Unicode字符。如果我在库上调用打印出Unicode字符的函数,它将通过异常'charmap' codec can't encode characters

所以这就是我试图解决的错误: 在调用库函数之前,使用os.system("chcp 65001")从python中调用“chcp 65001”windows console命令。

我知道有类似的问题,这就是我尝试上述解决方案的原因。但问题是,它成功地在控制台上调用命令并告诉我它激活了代码页。但是,仍有例外情况再次出现。但是如果我尝试在不关闭前一个控制台的情况下再次运行程序,程序将成功执行,没有任何异常。这意味着上述控制台命令在第一次尝试后生效。

我的问题是:有没有办法通过预先激活unicode支持来启动Windows控制台,这样我就不必再调用该程序两次了。

2 个答案:

答案 0 :(得分:6)

/k chcp 65001添加到启动cmd窗口的快捷方式中。或者,使用Python 3.6,它使用Windows Unicode API写入控制台并忽略代码页。但是,您仍然需要字体支持您正在打印的内容。

答案 1 :(得分:1)

下一步设置适用于Windows 8.1:

==> set "PYTHONIOENCODING=UTF-8"

==> chcp 65001
Active code page: 65001

==> type "%APPDATA%\Python\Python35\site-packages\usercustomize.py"
import win_unicode_console
win_unicode_console.enable()

测试:

==> python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> print (u'ěščřžýáíé ;ςερτυ яшертю ğüşi')
ěščřžýáíé ;ςερτυ яшертю ğüşi
>>>

测试中的字符串(无意义,只是为了演示):

  • ěščřžýáíé拉丁文,中欧
  • ;ςερτυ   希腊语
  • яшертю    Cyrillic
  • ğüşi     拉丁语,土耳其语