我使用python库将Unicode字符打印到windows控制台。如果我在库中调用一个输出Unicode字符的函数,它将抛出一个异常'charmap' codec can't encode characters
。
因此,这就是我试图解决的错误:在调用库函数之前,使用os.system("chcp 65001")
从python调用"chcp 65001“windows控制台命令。
我知道有类似的问题,这也是我尝试上述解决方案的原因。它成功地调用了控制台上的命令,并告诉我它激活了代码页。
然而,异常再次出现。
如果我试图在不关闭前一个控制台的情况下再次运行该程序,则该程序将毫无例外地成功执行。这意味着上面的控制台命令在第一次尝试之后生效。
我的问题是:是否有一种方法可以通过预先激活Unicode支持来启动windows控制台,这样我就不必调用该程序两次。
发布于 2017-03-06 16:44:28
将/k chcp 65001
添加到启动cmd窗口的快捷方式中。或者,使用Python3.6,它使用Windows向控制台写入,并忽略代码页。但是,您仍然需要字体支持来打印您正在打印的内容。
发布于 2017-03-06 17:17:12
下一个设置在Windows8.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
>>>
测试中的字符串(没有意义,只是为了演示):
ěščřžýáíé
拉丁语,中欧;ςερτυ
准希腊яшертю
准顺丁二烯ğüşi
中高档拉丁土耳其语https://stackoverflow.com/questions/42630191
复制相似问题