如何在Windows控制台中显示语言的本地口音?
print "Español\nPortuguês\nItaliano".encode('utf-8')
错误信息:
追踪记录(最近的调用在最前面): 文件 "", 第 1 行,在 print "Español\nPortuguês\nItaliano".encode('utf-8') UnicodeDecodeError: 'ascii' 编码无法解码字节 0xf1 在位置 4:序号不在范围内(128)
我正在尝试在 Windows 上制作一个多语言的控制台程序。这可能吗? 我也把文件保存成了 utf-8 编码,但还是出现同样的错误。
*编辑 我在这个程序中只是输出文本。我换成了 lucida 字体,但还是出现这个问题: 替代文本 http://img826.imageshack.us/img826/7312/foreignlangwindowsconso.png
我只是想找到一种便携的方法,在 Windows 的控制台中正确显示外语。如果能跨平台更好。我以为 utf-8 是解决方案,但你们都告诉我字体等也很重要。那么,有人能给我一个明确的答案吗?
3 个回答
这个方法对我有效:
# coding=utf-8
print "Español\nPortuguês\nItaliano"
你可以试着用 chcp 65001 && your_program.py
来运行它。另外,试着把命令提示符的字体改成 Lucida Console。
简短回答:
# -*- coding: utf-8 -*-
print u"Español\nPortuguês\nItaliano".encode('utf-8')
第一行告诉Python你的文件是用UTF-8编码的(你的编辑器也必须使用相同的设置),这行代码应该总是放在文件的开头。
另外,Python 2有两种不同的字符串类型,分别是str
和unicode
。在字符串前加个u
,就会创建一个unicode对象,而不是默认的str对象。你可以把这个unicode对象编码成UTF-8(不过直接打印unicode对象也应该没问题)。
首先,在Python 2.x中,你不能对包含非ASCII字符的字符串使用encode
。你需要写
print u"Español\nPortuguês\nItaliano".encode('utf-8')
在Windows控制台中使用UTF-8是比较麻烦的。
- 你需要把命令提示符的字体设置为Unicode字体(默认情况下唯一可用的就是Lucida Console),否则你会得到IBM437编码。
- 需要输入
chcp 65001
。 - 修改
encodings._aliases
,让它把"cp65001"当作UTF-8的别名。
即便如此,它似乎也不能正常工作。