我正在运行Windows 7,其控制台已配置为使用Consolas字体,这使我有可能输出Unicode。在远程管理器等程序中,我已经多次证明了在控制台中读取Unicode的能力:Cyrillics和德语äöü字母都可以在同一个控制台上以相同的字符串读取而无需编码切换。
现在关于Python。
我正在努力,但无法在其输出中看到Unicode。
默认情况下print(sys.stdout.encoding)
打印cp866
,stdout无法输出除ASCII和Cyrillics之外的任何字符。
它给了我以下结果:
print("Ля-ля äöüÄÖÜß")
UnicodeEncodeError: 'charmap' codec can't encode characters in position 6-12: character maps to <undefined>
print("Ля-ля äöüÄÖÜß".encode("utf-8"))
b'\xd0\x9b\xd1\x8f-\xd0\xbb\xd1\x8f \xc3\xa4\xc3\xb6\xc3\xbc\xc3\x84\xc3\x96\xc3\x9c\xc3\x9f'
好的,我在批处理文件中设置了PYTHONIOENCODING
环境变量:
SET PYTHONIOENCODING=UTF-8
得到了:
print(sys.stdout.encoding)
UTF-8
print("Ля-ля äöüÄÖÜß")
╨Ы╤П-╨╗╤П ├д├╢├╝├Д├Ц├Ь├Я
print("Ля-ля äöüÄÖÜß".encode("utf-8"))`
b'\xd0\x9b\xd1\x8f-\xd0\xbb\xd1\x8f \xc3\xa4\xc3\xb6\xc3\xbc\xc3\x84\xc3\x96\xc3\x9c\xc3\x9f'
怎么办?