0

Tkinter アプリケーション スタックのどこで、Text ウィジェットへの Unicode キーボード入力の代わりに疑問符 ("?") が置換されていますか?

可能な場所: Python、Tkinter、TCL/TK、Windows、Windows キーボード

ここで同様の質問があります: Windows キーボードを使用して非 ASCII 文字を入力すると、"?" が表示されます。

しかし、この質問は、「この問題は (アプリケーション スタックの) どこで発生していますか?」という質問を意図しています。したがって、おそらく、私が以前に提出したものと同様のクラスの質問に光を当てることができます.

私の環境は次のとおりです。

4

1 に答える 1

1

問題は、ある時点で、その特定の文字をサポートしていないエンコーディングを使用して、Unicode シンボルが特定のバイト シーケンスに変換されることです (これにより、代わりに「置換文字」が取得されます。?この特定の変換の a )。

Tk のコアは Unicode 対応であり、少なくともスクリプト作成の初期段階では UTF-8 を使用します。文字は (まあ、ほぼ確実に) キーボードと Windows から正しく取得されます。次に何が起こるかというと、文字が Python レイヤーに伝達されます。Tkinter のその部分はよくわかりませんが、そこに問題があると思われます (たとえば、間違った型の文字列が生成されている場合など)。つまり、Tkinter の微妙なバグかもしれないというにおいがします。(比較すると、Tcl の文字列の内部概念は完全に Unicode に対応しており、私は自分のコードでこれにかなり依存しており、何年にもわたって行ってきました。これには間違いなくいくつかのトレードオフがあり、それらのトレードオフの中で Python が選択されていることを私は知っています。オフは違います。)

取得した文字列の正確なタイプを確認することで、さらに確認できます。これUnicode 文字列である必要があります。そうしないと、この種の問題が永遠に発生することになります (一部のプラットフォームや展開では、256 文字をはるかに超える文字をネイティブに処理する必要があります)。

于 2013-05-22T09:23:41.580 に答える