1

Python プロジェクトのバグを修正しようとしています。クライアントが PyQt で記述されたプログラムに「é」などの utf8 文字を入力すると、エラーが発生します。クライアントはコンソール モードでプログラムを実行します (virtualenv をアクティブにして、スクリプト main.py を実行します)。しかし、Eclipse と Pydev で同じプログラムを実行すると、問題を再現できません (すべて問題ありません)。また、Eclipse はクライアントと同じ virtualenv を使用していると確信しています。Eclipse 内でプログラムを実行するのと、コマンド ラインで実行するのとでは、どのように異なる可能性があるのでしょうか? ありがとう、

4

1 に答える 1

1

あなたのコメントに基づいて、いくつかのことが起こっています。まず、toPlainText既に unicode オブジェクトを返します。だから問題はここにあります:

>>> str("é")
'\x82'
>>> unicode(str("é"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 0: ordinal
not in range(128)

http://docs.python.org/2/howto/unicode.htmlによると、「encoding 引数を省略すると、ASCII エンコーディングが変換に使用されるため、127 を超える文字はエラーとして扱われます」。

それでもエンコードする必要がある場合は、次のように encoding 1引数を追加します。

>>> unicode(str("é"), 'latin_1')
u'\x82'
于 2013-03-12T17:22:59.687 に答える