Googleからインポートしたデータを処理するDjangoアプリケーションに問題があります(gdata API経由)。基本的に、Googleからインポートされたすべてのテキストは、ページにエンコードの問題を表示しています(「セアラ州」は「セア州」として表示されています)。DjangoとMySql - エンコーディングの難易度
mysqlデータベース上のencondingはUFT-8にするように設定され、すべてのテキストは、私のクエリに正しく表示されているが、私はいくつかのDjangoのシェルを試してやった後の事は少し奇妙な取得するために開始しました:
私は」手でこれらのテキストのいずれかを変更しまし今では問題をコード化することなく、ページに示しているが、シェルによってエコーされたテキストがまだエンコーディングの問題を持つものと同様である:
>>> v1
<Video: São Paulo is awesome!>
>>> v1.title
u'S\xe3o Paulo is awesome!'
>>> v2
<Video: Ceará State>
>>> v2.title
u'Cear\xc3\xa1 State'
そして私は印刷しようとした場合テキスト:
print v1.title
Traceback (most recent call last):
File "<console>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe3' in position 1: ordinal not in range(128)
何が起こっているか、どのように修正できますか?ありがとうございました。
EDIT:
私はよりよい解決策はありませんしながら、私の問題を処理するために非常にダムの機能を書いた:
def normalize(s):
return s.encode('utf-8').replace('á', 'á').replace('ó', 'ó').replace('ç', 'ç').replace('ã', 'ã').replace('Ã', 'í')
EDIT 2:
問題を使用するように設定しなかったこれはApacheによって引き起こされましたUFT- 8。
としてこれを試しながら、あなたが適切にあなたがエラーを取得している理解していれば、あなたはテンプレートでこのデータを表示する必要がありますか? – Ahsan
Ahsan - そうでした。アクセントを修正するために私が手で変更したタイトルは正しく表示され、他はアクセントを置き換えて奇妙な文字でうんざりしています。 – Raphael
@Ahsan - シェルのv1のユニコード表現が正しいことに注意してください: