从cmd.exe运行时,Python的标准输出中的Unicode输出

时间:2013-07-27 16:17:34

标签: python encoding unicode utf-8 stdout

我正在运行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'

怎么办?

0 个答案:

没有答案