如何在Windows中的控制台中显示语言的原生重音?

时间:2010-08-13 00:59:34

标签: python unicode

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就是答案,但你们所有人都在告诉我字体等等。它也起了作用。所以任何人都有明确的答案?

3 个答案:

答案 0 :(得分:3)

简短回答:

# -*- coding: utf-8 -*-
print u"Español\nPortuguês\nItaliano".encode('utf-8')

第一行告诉Python你的文件是用UTF-8编码的(你的编辑器必须使用相同的设置),这行应该总是在你的文件的开头。

另一件事是Python 2知道两个不同的basestring对象 - strunicodeu前缀将创建这样的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很困难。

  • 您必须将命令提示符字体设置为Unicode字体(默认情况下唯一可用的字体是Lucida控制台),否则您无论如何都会获得IBM437编码。
  • 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。