5

インタラクティブ モードでスペイン語の文字を文字列に入力しようとしています。たとえば、option+e e「é」を生成して、「」のようなステートメントを作成しstring="él"ます。これはターミナルでは機能しますが、python (私がインストールしたすべてのバージョンで、いくつかあります) では機能しません。それは単に何も生成しません。これには、文字を貼り付けようとすることも含まれます。これはまさにこの質問で説明されている問題、特に貼り付けに関する部分とアレックスの質問へのコメントで説明されている問題であり、アレックスの答えはutf-8文字に関するコピー/貼り付けの失敗の問題に対処していないと指摘しています。これどうやってするの?

4

2 に答える 2

3

Python がインタラクティブな入力を読み取るために使用するreadlineライブラリは、端末から送信された非 ASCII 文字を受け入れません。これは、端末エミュレータが UTF-8 エンコーディングの文字を提供していないか、readline が UTF-8 入力を受け入れるように設定されていないことを意味します。

幸いなことに、readline はbashシェルを含む多くの一般的なプログラムで使用されているため、readline を機能させる方法についての情報が豊富にあります。たとえば、この記事から

UTF-8 入力を正しく機能させるにはどうすればよいですか?

  • 端末インスペクタで:
    • [エミュレーション] セクションで、[非 ASCII 文字をエスケープ] オプションをオフにします。
    • [表示] セクションで、[文字セットのエンコード] として [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 ~/.profileaおよび aを実行して、変更を適用しますsource ~/.inputrc

于 2012-10-05T21:01:53.883 に答える
0

u文字列リテラルの前に使用して、Unicode 文字列にします。

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

それでも問題が解決しない場合は、エディターまたはターミナルに問題があります。その場合は、追加してみてください

#coding: utf8

Python プログラムの最初の 2 行のいずれかで、Unicode をサポートする適切なエディターを使用してください。

于 2012-04-09T18:11:26.100 に答える