首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git-bash不显示带日志记录的Unicode

Git-bash不显示带日志记录的Unicode
EN

Stack Overflow用户
提问于 2022-08-25 08:38:31
回答 2查看 74关注 0票数 0

在使用Python的logging时,我很难在git-bash上显示Unicode字符。

没有代码的

  • --一切正常工作。
  • cmd --一切工作正常。
  • PyCharm --所有东西都与git-bash一起工作--E 114不工作< logging >E 215(显示“\u 2501”)。H 216F 217

见下文..。

我正在使用的

2.37.2.windows.2

  • Python 3.9.6 (
  • Windows 10
  • git版本)(与Python3.7相同).

即使这样也没用:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-25 11:28:20

正如评论所指出的那样,logging使用的是sys.stderr,而不是sys.stdout

至于终端(至少在我的Windows机器上):

在从utf-8.

  • When运行Python时,sys.stdoutsys.stderr的默认编码都是从git-bash运行的Python,sys.stdoutsys.stderr的默认编码都是cp1252。真的不知道为什么。我假设大多数git-bash用户都想要类似Linux的行为.

两个终端似乎都接受utf-8

由于我的脚本只需要在这两个终端上运行,下面的内容解决了我的问题:

代码语言:javascript
复制
import sys
sys.stderr.reconfigure(encoding='utf-8')
票数 0
EN

Stack Overflow用户

发布于 2022-08-25 09:19:41

Python的输出编码设置为cp1252,它不能对字符U+2501进行编码:

代码语言:javascript
复制
>>> '\u2501'.encode('cp1252')
...
UnicodeEncodeError: 'charmap' codec can't encode character '\u2501' in position 0: character maps to <undefined>

通常,如果您试图打印这个字符,您将得到一个类似的错误。但是由于您正在隐式地使用logging.basicConfig,所以errors的默认值是'backslashreplace',这解释了为什么您看到反斜杠-转义输出而不是错误。

有很多方法可以让Python输出UTF-8,但是不要这样做:您的终端期望CP1252,所以ASCII范围之外的所有内容都是错误的。

相反,请参阅this answer以获得Git使用UTF-8的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73484406

复制
相关文章

相似问题

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