我在 Windows 7 上使用 Python 2.6
我从这里借用了一些代码:Python、Unicode 和 Windows 控制台
我的目标是能够在 Windows 控制台中显示 utf-8 字符串。
显然在 python 2.6 中,
sys.setdefaultencoding()
不再支持
然而,我在尝试使用它之前编写了 reload(sys) ,并且它神奇地没有出错。
此代码不会出错,但它显示有趣的字符而不是日语文本。我相信问题是因为我没有成功更改 Windows 控制台的代码页。
这些是我的尝试,但它们不起作用:
reload(sys)
sys.setdefaultencoding('utf-8')
print os.popen('chcp 65001').read()
sys.stdout.encoding = 'cp65001'
也许您可以使用 win32console 来更改代码页?我尝试了链接网站上的代码,但 win32console 也出错了。也许该代码已过时。
这是我的代码,不会出错,但会打印有趣的字符:
#coding=<utf8>
import os
import sys
import codecs
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)
#print os.popen('chcp 65001').read()
print(sys.stdout.encoding)
sys.stdout.encoding = 'cp65001'
print(sys.stdout.encoding)
x = raw_input('press enter to continue')
a = 'こんにちは世界'#.decode('utf8')
print a
x = raw_input()
我知道您声称您正在使用 Python 2.6,但如果您能够使用 Python 3.3,您会发现这最终受到支持。
使用命令chcp 65001
在开始Python之前。
See http://docs.python.org/dev/whatsnew/3.3.html#codecs
在 Python 3.6 中,甚至不再需要使用chcp
命令,因为 Python 完全绕过字节级控制台界面并使用本机 Unicode 界面。看PEP 528:将 Windows 控制台编码更改为 UTF-8.
正如 @mbom007 的评论中所述,确保控制台配置的字体支持您尝试显示的字符也很重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)