16

utf-8 での文字のエンコードに問題があります。Django を使用していますが、非プレーン テキストで Android 通知を送信しようとすると、このエラーが発生します。エラーの原因を見つけようとしたところ、エラーの原因が自分のプロジェクトにないことがわかりました。

Python シェルでは、次のように入力します。

'ç'.encode('utf8')

そして、私はこのエラーを受け取ります:

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

次の場合と同じエラーが発生します。

'á'.encode('utf-8')
unicode('ç')
'ç'.encode('utf-8','ignore')

smart_text、force_text、smart_bytes でも​​エラーが発生します。

それは Python、私の OS、または別の問題ですか?

Red Hat バージョン 4.4.7-3 で Python 2.6.6 を実行しています

4

2 に答える 2

21

Unicode 文字列ではなく、文字列をエンコード/デコードしようとしています。次のステートメントは機能します。

u'ç'.encode('utf8')
u'á'.encode('utf-8')
unicode(u'ç')
u'ç'.encode('utf-8','ignore')
于 2013-09-16T11:59:57.667 に答える
3

を使用します。接頭辞u'...'なしuでは、Unicode 文字列ではなくバイト文字列です。

>>> u'ç'.encode('utf8')
'\xc3\xa7'
于 2013-09-16T11:59:45.563 に答える