2017-07-14 8 views
0

私は単純なmysql DBからデータを取り出し、PythonとFlaskで表示する小さなweb-appを作成しました。データベースのテキストフィールドはutf8_general_ciとしてエンコードされ、一部には特殊文字(「Zürich」など)が含まれています。App Engineは文字エンコーディングをオンラインとローカルで異なる方法で処理しますか?

Flask/Jinja2 like to work on unicodeのように、クエリの後、文字列はユニコードに変換されてテンプレートに渡されます。不思議なのは、コードがローカルで実行されているか(Macラップトップ)、GAEにデプロイされているかによって、ユニコードに変換する別の方法が必要です。

ローカルで実行しているとき、これは動作します:GAE上で展開したとき

return [[unicode(c, encoding='utf-8') if isinstance(c, basestring) else c for c in b] for b in l] 

これは動作します:

return [[unicode(c, encoding='latin-1') if isinstance(c, basestring) else c for c in b] for b in l] 

GAE版をローカルで実行すると、「Zürich」が「Zürich」と表示されます。逆もありますが、UnicodeDecodeエラーが発生します。

私の知る限り、2つのデータベースは同じです。オンライン版は、ローカル版のストレートダンプです。

答えて

0

üは、üの茂木です。

考えられる原因については、hereの「Mojibake」を参照してください。

ソースコード内で何をすべきかに関するPythonの注記については、hereを参照してください。私はJinjaの細部については知らない。

関連する問題