【问题标题】:How can I display native accents to languages in console in windows?如何在 Windows 的控制台中显示本地语言的口音?
【发布时间】:2019-11-17 00:25:39
【问题描述】:
print "Español\nPortuguês\nItaliano".encode('utf-8')

错误:

Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 print "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 是答案,但你们所有人都在告诉我字体等。也起到了作用。那么有人有明确的答案吗?

【问题讨论】:

  • 好的,我打开了,cmd.exe 然后输入 chcp 65001 这“更改了代码页” 现在这段代码将正确显示它: print u"Español\nPortuguês\nItaliano" with .py file encoding in utf- 8在编辑器中现在我必须想办法通过python自动设置这个代码页.....

标签: python unicode


【解决方案1】:

首先,在 Python 2.x 中,您不能 encode 和具有非 ASCII 字符的 str。你必须写

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

在 Windows 控制台上使用 UTF-8 很困难。

  • 您必须将命令提示符字体设置为 Unicode 字体(其中唯一可用的默认字体是 Lucida Console),否则无论如何您都会获得 IBM437 编码。
  • chcp 65001
  • 修改 encodings._aliases 以将“cp65001”视为 UTF-8 的别名。

即使那样,它似乎也不能正常工作。

【讨论】:

    【解决方案2】:

    简答:

    # -*- 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 对象)。

    【讨论】:

    【解决方案3】:

    这对我有用:

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

    您可能想尝试使用chcp 65001 && your_program.py 运行它。同样,尝试将命令提示符字体更改为 Lucida Console。

    【讨论】:

    • 只有当您的控制台设置为 utf-8 时,这才会“起作用”。在任何地方使用 unicode 并对输出进行编码是一种更强大的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多