我有一个程序,我想在其中使用一些Unicode字符,例如μ和下标p,
print u"\xb5"
它工作得很好,但是当我这样做的时候,
print u"\u209A"
我收到此错误消息:
Traceback (most recent call last):
File "C:/Users/tech/Desktop/Circuit Design Tool/Test 2.py", line 1, in <module>
print u"\u209A"
File "C:\Python27\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u209a' in position 0: character maps to <undefined>
为什么会这样?这些是正确的unicode转义码吗?
最佳答案
Windows控制台根本不支持使用C标准库I/O函数的应用程序使用Unicode(就像Python那样)。
原则上,正如其他注释所建议的,您可以将代码页更改为65001(并将pythonionecoding环境变量设置为utf-8以进行匹配),但实际上,控制台主机对该代码页的支持中存在一些长期存在的错误,因此在尝试使用该代码页时可能会出现双重打印或挂起。这通常是不可用的。
从Windows控制台获得Unicode的可靠方法是直接调用Win32WriteConsoleW
/ReadConsoleW
函数,而不是依赖C stdlib。如果您真的需要这样做,win_unicode_console包将为您打包。
(通常一个更简单的选择是放弃Windows控制台,使用IDE等其他环境。)
关于python - Unicode转义不适用于某些字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31730870/