![]() |
1
33
注: 这个答案有点过时(从2008年开始)。请小心使用下面的解决方案!! 这是一个详细说明问题和解决方案的页面(在页面中搜索文本 将sys.stdout包装到实例中 ): 以下是该页的代码摘录:
那页上有更多的信息,值得一读。 |
![]() |
2
57
更新:
Python 3.6
器具
PEP 528: Change Windows console encoding to UTF-8
:
Windows上的默认控制台现在将接受所有Unicode字符。
在内部,它使用与
the
错误意味着您试图打印的Unicode字符不能用当前(
>>> u"\N{EURO SIGN}".encode('cp437') Traceback (most recent call last): ... UnicodeEncodeError: 'charmap' codec can't encode character '\u20ac' in position 0: character maps to
Windows控制台不接受Unicode字符,甚至可以显示它们(仅限BMP)
如果配置了相应的字体
.
见 What's the deal with Python 3.4, Unicode, different languages and Windows?
如果足以将所有不可编码字符替换为
在python 3.6+中,由
|
![]() |
3
26
尽管其他听起来似乎合理的答案建议将代码页更改为65001,但是
does not work
. (另外,更改默认编码时使用
见 this question 详细信息和代码。 |
![]() |
4
14
如果您不想获得坏字符的可靠表示,可以使用类似的方法(使用python>=2.6,包括3.x):
字符串中的错误字符将转换为可由Windows控制台打印的表示形式。 |
![]() |
5
10
下面的代码将使Python以utf-8的形式输出到控制台,即使在Windows上也是如此。 控制台将在Windows 7上很好地显示字符,但在Windows XP上,它将无法很好地显示字符,但至少它可以工作,而且最重要的是,您的脚本在所有平台上的输出都是一致的。您将能够将输出重定向到文件。 下面的代码在Windows上用python 2.6进行了测试。
|
![]() |
6
4
就像Giampaolo Rodol的回答,但更糟糕的是:我真的,真的打算花很长时间(很快)了解编码的整个主题,以及它们如何应用于windoze控制台, 就目前而言,我只想做一件事,这意味着我的程序不会崩溃,我明白…而且,这并不涉及导入太多的外来模块(特别是我使用的是Jython,所以有一半时间一个python模块实际上不可用)。
注意“pr”比“print”短(比“safeprint”短得多)…! |
![]() |
7
3
对于python 2,请尝试:
对于python 3,请尝试:
或者尝试Win Unicode控制台:
|
![]() |
8
2
你的问题是 不是 Win控制台不愿意接受Unicode(因为默认情况下我猜是Win2K,所以它会这样做)。它是默认的系统编码。试试这段代码,看看它给了你什么:
如果上面写的是ASCII,那就是你的原因;-) 您必须创建一个名为sitecustomize.py的文件,并将其放在python路径下(我将其放在/usr/lib/python2.5/site-packages下,但这在win上有所不同-它是c:\python\lib\site packages或其他文件),内容如下:
也许您还需要在文件中指定编码:
编辑:可以找到更多信息 in excellent the Dive into Python book |
![]() |
9
2
在执行python脚本之前,只需在命令行中输入以下代码:
|
![]() |
10
1
关于J.F.塞巴斯蒂安的回答有点关联,但更直接。 如果在打印到控制台/终端时遇到此问题,请执行以下操作:
|
![]() |
11
1
python 3.6 windows7:有几种方法可以启动python,您可以使用python控制台(上面有python徽标)或windows控制台(上面写有cmd.exe)。 我无法在Windows控制台中打印utf8字符。打印UTF-8字符会引发此错误:
在尝试了并且没有理解上面的答案之后,我发现这只是一个设置问题。右键单击命令控制台窗口顶部的选项卡
|
![]() |
12
1
DR:
我自己也遇到了这个问题,在一个twitch chat(IRC)机器人上工作。(最新的python 2.7) 我想分析聊天信息以回应…
但也要以人类可读的格式安全地将它们打印到控制台上:
这纠正了机器人抛出的问题
|
![]() |
13
0
詹姆斯·苏拉克问,
其他解决方案建议我们尝试修改Windows环境或替换python的
在Windows7下,可以让python 3.5打印unicode,而不抛出
代替:
现在,python将无法打印的unicode字符显示为 xNN 十六进制代码,例如: halmalo n\xe2\x80\x99\xc3\xa9tait plus qu\xe2\x80\x99un点噪声 而不是 哈马洛-纳提加群点-诺瓦 当然,后者更可取 其他条件相同 否则,前者对于诊断消息是完全准确的。因为它将Unicode显示为文本字节值,所以前者还可以帮助诊断编码/解码问题。
注:
这个
|