如何在Windows控制台中显示语言的本地口音?

3 投票
3 回答
21640 浏览
提问于 2025-04-16 02:43
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 个回答

1

这个方法对我有效:

# coding=utf-8
print "Español\nPortuguês\nItaliano"

你可以试着用 chcp 65001 && your_program.py 来运行它。另外,试着把命令提示符的字体改成 Lucida Console。

3

简短回答:

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

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

另外,Python 2有两种不同的字符串类型,分别是strunicode。在字符串前加个u,就会创建一个unicode对象,而不是默认的str对象。你可以把这个unicode对象编码成UTF-8(不过直接打印unicode对象也应该没问题)。

2

首先,在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的别名。

即便如此,它似乎也不能正常工作。

撰写回答