1

Flask アプリケーションをデプロイするために mod_wsgi で Apache2 を使用しています。

pydev を使用して Eclipse から実行すると (つまり、Eclipse の「実行」メニュー アイコンを使用して)、このアプリケーションは完全に機能します。

しかし、まったく同じコードが Eclipse の外部から実行されると (コマンド ラインからスクリプトを呼び出すか、mod_wsgi を介して)、aUnicodeDecodeErrorが発生し、ページを表示できません。

問題のあるコードの(短縮された)部分は次のとおりです。

label = 'créer'
row = '<tr><td>{cell_label}</td></tr>'.format(cell_label = label)
render_template('template.html', row = row)

template.html には以下が含まれます。

<table>
    {{ row | safe }}
</table>

発生したエラーは次のとおりです。

'<tr><td>{cell_label}</td></tr>'.format(cell_label = label)
UnicodeEncodeError: 'ascii' codec can't encode character u'\\xe9' in position 7: ordinal not in range(128)

その他の情報

  • echo $LANG戻り値 :

    en_US.UTF-8

  • file flask_app.py returns

    Python スクリプト、UTF-8 Unicode テキスト実行可能ファイル

  • Eclipse からコードを実行するときと、テストを実行するときに、同じインタープリター (virtualenv の python 2.7.3) を使用します。

編集

コードは Eclipse でしか実行できないという事実を反映して、質問のタイトルと説明を変更しました。

4

1 に答える 1

0

他の2つの回答済みの質問で解決策を見つけました:

問題の特定

( Eclipse+PyDev での Unicode 文字列の許容範囲)

基本的に、うまくいかないのは、Pydev がバックグラウンドで python のデフォルトのエンコーディングを変更することです。これは、Pydev を使用して Eclipse を実行したときに問題なく動作する非 ASCII 文字を含むコードが、他のコンテキストではクラッシュする可能性があることを意味します。

解決策を見つける

( Python < 3 で UTF-8 でエンコードされたテキストをコンソールに出力する方法は? )

デフォルトのエンコーディングは変更しないでください。Keith's answer は回避策を提供しますが、実際には使用しないでください。唯一の良い解決策は、Pydev の環境が非標準的であることを認識し、コードのチャンクを書き直すことです。

于 2013-09-17T14:01:45.527 に答える