print "Español\nPortuguês\nItaliano".encode('utf-8')
错误:
追踪(最近一次通话): 文件“”,第1行,in 打印“Español\nPortuguês\ nItaliano”.encode('utf-8') UnicodeDecodeError:'ascii'编解码器无法解码位置4中的字节0xf1:序数不在范围内(128)
我正在尝试在Windows中制作多语言控制台程序。这可能吗? 我也用utf-8编码保存了文件,我得到了同样的错误。
*编辑 我只是在这个程序中输出文本。我改为lucida字体,我不断得到这个: alt text http://img826.imageshack.us/img826/7312/foreignlangwindowsconso.png
我只是在寻找一种可移植的方式在Windows中的控制台中正确显示外语。如果它可以跨平台,甚至更好。我认为utf-8就是答案,但你们所有人都在告诉我字体等等。它也起了作用。所以任何人都有明确的答案?
答案 0 :(得分:3)
简短回答:
# -*- coding: utf-8 -*-
print u"Español\nPortuguês\nItaliano".encode('utf-8')
第一行告诉Python你的文件是用UTF-8编码的(你的编辑器必须使用相同的设置),这行应该总是在你的文件的开头。
另一件事是Python 2知道两个不同的basestring
对象 - str
和unicode
。 u
前缀将创建这样的unicode对象,而不是默认的str对象,然后您可以将其编码为UTF-8(但直接打印unicode对象也应该有效)。
答案 1 :(得分:2)
首先,在Python 2.x中,您不能encode
具有非ASCII字符的str
。你必须写
print u"Español\nPortuguês\nItaliano".encode('utf-8')
在Windows控制台上使用UTF-8很困难。
chcp 65001
encodings._aliases
以将“cp65001”视为UTF-8的别名。即便如此,它似乎也不正常。
答案 2 :(得分:1)
这对我有用:
# coding=utf-8
print "Español\nPortuguês\nItaliano"
您可能希望尝试使用chcp 65001 && your_program.py
运行它。同时,尝试将命令提示字体更改为Lucida Console。