unicode 错误打印 \u2002 使用 Python 3

unicode error printing \u2002 using Python 3

我在尝试打印文本块时收到 Python 无法解码字符 \u2002 的错误:

UnicodeEncodeError: 'charmap' codec can't encode character '\u2002' in position 355: character maps to <undefined>

我不明白的是,据我所知,这是一个 unicode 字符(即 EN SPACE 字符),所以不确定为什么不打印。

作为参考,内容是使用file_content = open (file_name, encoding="utf8")

阅读的

适合我! (在 linux 终端上)

>>> print("\u2002")                                                   

它是隐形的,因为它是 EN_SPACE

如果您使用 windows 但是您可能在您的终端中使用代码页 125X 并且...

>>> "\u2002".encode("cp1250")        
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.4/encodings/cp1250.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character '\u2002' in position 0: character maps to <undefined>

在 Unicode 中使用该字符没有问题(作为 Python 中的 unicode 字符串)。但是当你把它写出来时("print it"),它需要被编码成一个编码。某些编码不支持某些字符。您用于打印的编码不支持该特定字符。

可能您正在使用 Windows 控制台,该控制台通常使用不包含此字符的代码页,如 850 或 437。

有一些方法可以更改 Windows 控制台代码页 (chcp),或者您可以尝试在 Idle 或其他 IDE