我使用python库向Windows控制台输出Unicode字符。如果我在库上调用打印出Unicode字符的函数,它将通过异常'charmap' codec can't encode characters
。
所以这就是我试图解决的错误:
在调用库函数之前,使用os.system("chcp 65001")
从python中调用“chcp 65001”windows console命令。
我知道有类似的问题,这就是我尝试上述解决方案的原因。但问题是,它成功地在控制台上调用命令并告诉我它激活了代码页。但是,仍有例外情况再次出现。但是如果我尝试在不关闭前一个控制台的情况下再次运行程序,程序将成功执行,没有任何异常。这意味着上述控制台命令在第一次尝试后生效。
我的问题是:有没有办法通过预先激活unicode支持来启动Windows控制台,这样我就不必再调用该程序两次了。
答案 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
拉丁语,土耳其语