web-dev-qa-db-ja.com

UnicodeDecodeError: 'ascii'コーデックは位置0のバイト0xe7をデコードできません:序数が範囲(128)にありません

Utf-8で文字のエンコードに問題があります。私はDjangoを使用していて、Androidプレーンテキスト以外の通知を送信しようとしたときにこのエラーが発生しました。エラーの原因を見つけようとし、なんとかして解決しましたエラーの原因が私のプロジェクトにないこと。

python Shellで、次のように入力します:

'ç'.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、または別の問題ですか?

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

16
lluisu

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

u'ç'.encode('utf8')
u'á'.encode('utf-8')
unicode(u'ç')
u'ç'.encode('utf-8','ignore')
21
Simeon Visser

使用する u'...'、接頭辞uがない場合は、Unicode文字列ではなくバイト文字列です。:

>>> u'ç'.encode('utf8')
'\xc3\xa7'
3