我正在运行 Windows 7,其控制台已配置为使用 Consolas 字体,这使我可以输出 Unicode。在控制台读取 Unicode 的能力,我已经为 Far Manager 等程序多次证明:西里尔字母和德语 äöü 字母都可以在同一个控制台上以相同的字符串读取,而无需编码切换。
现在关于 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'
该怎么办?