首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python使用chcp 65001预激活控制台窗口

使用python使用chcp 65001预激活控制台窗口
EN

Stack Overflow用户
提问于 2017-03-06 16:04:02
回答 2查看 5.3K关注 0票数 5

我使用python库将Unicode字符打印到windows控制台。如果我在库中调用一个输出Unicode字符的函数,它将抛出一个异常'charmap' codec can't encode characters

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

我知道有类似的问题,这也是我尝试上述解决方案的原因。它成功地调用了控制台上的命令,并告诉我它激活了代码页。

然而,异常再次出现。

如果我试图在不关闭前一个控制台的情况下再次运行该程序,则该程序将毫无例外地成功执行。这意味着上面的控制台命令在第一次尝试之后生效。

我的问题是:是否有一种方法可以通过预先激活Unicode支持来启动windows控制台,这样我就不必调用该程序两次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-06 16:44:28

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

票数 7
EN

Stack Overflow用户

发布于 2017-03-06 17:17:12

下一个设置在Windows8.1上工作:

代码语言:javascript
运行
复制
==> 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()

测试:

代码语言:javascript
运行
复制
==> 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中高档拉丁土耳其语
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42630191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档