使用Python 2.7.11
#!/usr/bin/python
# -*- coding: utf-8 -*-
print 'ÁÉŐÜŐ'
print u'ÁÉÖÜŐ'
具有以下结果:
ÁÉŐÜŐ
Traceback (most recent call last):
File "C:\Users\RaseR\Desktop\testing.py", line 4, in <module>
print u'ÁÉÖÜŐ'
File "C:\Python27\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0150' in
position 4: character maps to <undefined>
如有必要:
Notepad ++,编码为UTF-8
带有Lucida控制台字体的Windows 10控制台
答案 0 :(得分:-1)
当您print
时,您正在打印到标准输出。标准输出使用一些编码,所有内容都必须转换为该编码。
就我而言:
>>> sys.stdout.encoding
'cp852'
>>> u'\u0150'.encode(sys.stdout.encoding)
'\x8a'
>>> print u'\u0150'
Ő
>>> print '\x8a'
Ő
在您的情况下,似乎st字符在stdout使用的编码中不存在,因此转换失败。没有办法打印出来。
您可以手动编码,指定如何处理无法编码的字符:
>>> print u'\u0150'.encode(sys.stdout.encoding, 'replace')
Ő
使用无法编码的字符:
>>> print u'\u0150\u1234'.encode(sys.stdout.encoding, 'replace')
Ő?