使用python启动用chcp 65001预先激活的控制台窗口

我使用一个Python库打印出一个Unicode字符到Windows控制台。 如果我在打印出Unicode字符的库上调用一个函数,它将通过一个例外'charmap' codec can't encode characters

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

我知道有类似的问题,这就是为什么我尝试了上述解决scheme。 但事情是,它成功地调用控制台上的命令,并告诉我,它激活了代码页。 不过,这个例外还是出现了。 但是如果我试图在不closures前一个控制台的情况下再次运行程序,则程序将成功执行而不会有任何exception。 这意味着上面的控制台命令在第一次尝试后生效。

我的问题是:有没有办法通过预先激活Unicode支持启动Windows控制台,以便我不必两次调用该程序。

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

下一个设置适用于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 >>> 

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

  • 拉丁语,中欧
  • ;ςερτυ希腊语
  • яшертю西里尔文
  • 拉丁语,土耳其语