5

我正在尝试以交互模式将一些西班牙语字符输入字符串。例如,option+e e要产生 'é' 以便我做出类似 的声明string="él"。这在终端中有效,但在 python(我安装的任何版本,我有几个)中却没有。它根本不产生任何东西。这包括尝试粘贴字符。这正是这个问题中描述的问题,特别是关于粘贴的部分和他对亚历克斯问题的评论,他指出亚历克斯的回答没有解决关于 utf-8 字符的复制/粘贴失败的问题。我怎样才能做到这一点?

4

2 回答 2

3

Python 用于读取交互式输入的readline库不接受终端发送的非 ASCII 字符。这意味着您的终端仿真器不提供 UTF-8 编码的字符,或者 readline 未配置为接受 UTF-8 输入。

幸运的是,许多流行的程序都使用了 readline,包括bashshell,因此有很多信息可以让它工作。例如,从这篇文章

如何让 UTF-8 输入正常工作?

  • 在终端检查器中:
    • 在 Emulation 部分中,关闭 Escape non-ASCII characters 选项。
    • 在显示部分中,选择 Unicode (UTF-8) 作为字符集编码。
  • 将以下行添加到您的.profile:

    export LC_CTYPE=en_US.UTF-8
    
  • 将以下行添加到您的.inputrc:

    set meta-flag on
    set input-meta on
    set output-meta on
    set convert-meta off 
    
  • source ~/.profile通过执行 a和 a来应用更改source ~/.inputrc

于 2012-10-05T21:01:53.883 回答
0

在字符串文字之前使用u,使其成为 unicode 字符串。

string = u"El avión cayó del cielo"

如果这不起作用,则问题出在您的编辑器或终端中,在这种情况下,请尝试添加

#coding: utf8

在 python 程序的前两行中的任何一行中,并使用支持 unicode 的适当编辑器。

于 2012-04-09T18:11:26.100 回答