在使用Python的logging时,我很难在git-bash上显示Unicode字符。
没有代码的
cmd --一切工作正常。PyCharm --所有东西都与git-bash一起工作--E 114不工作< logging >E 215(显示“\u 2501”)。H 216F 217见下文..。
我正在使用的:
2.37.2.windows.2



即使这样也没用:

发布于 2022-08-25 11:28:20
正如评论所指出的那样,logging使用的是sys.stderr,而不是sys.stdout。
至于终端(至少在我的Windows机器上):
在从utf-8.
sys.stdout和sys.stderr的默认编码都是从git-bash运行的Python,sys.stdout和sys.stderr的默认编码都是cp1252。真的不知道为什么。我假设大多数git-bash用户都想要类似Linux的行为.两个终端似乎都接受utf-8。
由于我的脚本只需要在这两个终端上运行,下面的内容解决了我的问题:
import sys
sys.stderr.reconfigure(encoding='utf-8')发布于 2022-08-25 09:19:41
Python的输出编码设置为cp1252,它不能对字符U+2501进行编码:
>>> '\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的方法。
https://stackoverflow.com/questions/73484406
复制相似问题