我正在WinXP 5.1.2600上工作,编写一个涉及中文拼音的Python应用程序,这让我陷入了无尽的Unicode问题。转换到Python 3.0已经解决了其中很多问题。但是控制台输出的print()函数由于某种奇怪的原因不支持Unicode。下面是一个微小的程序。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print('sys.stdout encoding is "' + sys.stdout.encoding + '"')
str1 = 'lüelā'
print(str1)
输出为(为了可读性将角括号更改为方括号):
sys.stdout 编码为 "cp1252" Traceback (most recent call last): File "TestPrintEncoding.py", line 22, in [模块] print(str1) File "C:\Python30\lib\io.py", line 1491, in write b = encoder.encode(s) File "C:\Python30\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u0101' in position 4: character maps to [undefined]
请注意,ü = '\xfc'
= 252
没有问题,因为它是高ASCII。但是 ā = '\u0101'
超出了8位。
有人知道如何将 sys.stdout
的编码更改为 'utf-8'
吗?请记住,如果我正确理解文档,Python 3.0 不再使用 codecs
模块。
(请注意,“coding:”行指定的编码是源代码的编码,而不是控制台输出的编码。但感谢您的想法!)
CHCP 65001
实现),则cmd.exe可以显示Unicode字符。 - smerlin