在Python 3打印非ASCII字符(Printing non-ascii characters

2019-09-28 07:41发布

所以我想打印像®特殊字符(保留符号字符)。 似乎很容易。 我发现别人试图做同样的事情,但随着版权符号,并给它一个旋转,但它出错了:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('\u00a9')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\lib\encodings\cp437.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xa9' in position 0: character maps to <undefined>

我以前有这个问题上的Python 3.4.2,而只是将其更新到3.4.3,但它似乎有同样的问题。

需要注意的另一个有趣的事情是,蟒蛇仅错误,当我尝试打印这些字符。 如果我离开他们印刷的,则:

>>> a = '\xae'
>>> if a == '\xae':
...     print(True)
...
True

Answer 1:

要打印这些字符,你可以使用:

ReservedSignChar = '®';
x = ReservedSignChar.encode('utf-8');
print(x);


Answer 2:

究其原因,只出现了错误,当您尝试打印到cmd是因为在cmd本身不支持该字符的窗口。 看到:

  1. 这个其他堆栈溢出问题问基本上是一回事。

  2. @Martijn Pieters的评论链接到一个python.org站点寻址的打印故障 ,这也解释了在Windows,

  3. 现在支持的字符更naitive的OS ,以及版权注册和储备登录不在这一套。

这也解释了为什么只出现了错误,当您尝试打印到CMD,但你仍然可以使用它在布尔比较。 不知道究竟是什么,他们在python 2.X没有得到它的功能。



文章来源: Printing non-ascii characters in Python 3