gpt4 book ai didi

python 2.7 : output utf-8 in Windows console

转载 作者:可可西里 更新时间:2023-11-01 13:26:22 27 4
gpt4 key购买 nike

假设

s = u"test\u0627\u0644\u0644\u0647 \u0623\u0643\u0628\u0631\u7206\u767A\u043E\u043B\u043E\u043B\u043E"

如果我尝试直接打印它,

>>> print s
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'cp932' codec can't encode character u'\u0627' in position 4: illegal multibyte sequence

所以我从 Python 中将控制台更改为 UTF-8(否则它不会理解我的输入)。

import win32console
win32console.SetConsoleOutputCP(65001)
win32console.SetConsoleCP(65001)

然后输出编码为utf-8的字符串,因为Python不知道chcp 65001是UTF-8(一个已知的bug)。

>>> print s.encode('utf-8')
testالله أكبر爆発ололоTraceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 0] Error

如您所见,它会成功打印,直到遇到换行符,然后抛出 IOError。

以下解决方法有效:

def safe_print(str):
try:
print str.encode('utf-8')
except:
pass
print

>>> safe_print(s)
testالله أكبر爆発ололо

但一定有更好的办法。有什么建议吗?

最佳答案

Searching SO for python utf8 windows 带来的第一个结果是问题 Getting python to print in UTF8 on Windows XP with the console它描述了从 Python 在 Windows 中打印 utf8 的问题。

关于 python 2.7 : output utf-8 in Windows console,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com