バージョン:2.7.3 PythonのPythonの要求エンコーディングPOSTデータ
他のライブラリ:Pythonの-要求1.2.3、Jinja2の(2.6)
私は、フォーラムにデータを送信するスクリプトを持っているし、問題がありますASCII以外の文字はゴミとして表示されます。例えばAndréTéchinéのような名前はAndréTéchinéとして出てくる。ここで
は、データが送信される方法は次のとおりです。
1)のデータが最初にそうようにUTF-8エンコードされたCSVファイルからロードされます。
entries = []
with codecs.open(filename, 'r', 'utf-8') as f:
for row in unicode_csv_reader(f.readlines()[1:]):
entries.append(dict(zip(csv_header, row)))
unicode_csv_readerは、Python CSVのドキュメントページの下部からです。 http://docs.python.org/2/library/csv.html
インタープリタにエントリ名を入力すると、その名前はu'Andr\xe9 T\xe9chin\xe9'
と表示されます。
2)次は、私はJinja2のを介してデータをレンダリング:
tpl = tpl_env.get_template(u'forumpost.html')
rendered = tpl.render(entries=entries)
私は再び同じ参照インタプリタでレンダリング名を入力する場合:私は、レンダリングされた変数を書き込む場合は、今すぐu'Andr\xe9 T\xe9chin\xe9'
を
with codecs.open('out.txt', 'a', 'utf-8') as f:
f.write(rendered)
しかし、私は、フォーラムに送信する必要があります:このようなファイル名は、それが正しく表示さ
0123私が持っているPOST要求コードで3):
params = {u'post': rendered}
headers = {u'content-type': u'application/x-www-form-urlencoded'}
session.post(posturl, data=params, headers=headers, cookies=session.cookies)
セッションが要求セッションです。
名前がフォーラムポストで壊れて表示されます。私は、次のことを試してみました:
- はrendered.encode( 'UTF-8')(同じ結果)レンダリング
- としてレンダリングエンコード= urllib.quote_plus(レンダリング)は(として出てくる
- ヘッダを除外します私はrendered.encode( 'UTF-8')を入力すると、すべて%XY)
は、私は以下を参照してください。
'Andr\xc3\xa9 T\xc3\xa9chin\xc3\xa9'
私は問題を解決できますか?ありがとう。 UTF8にデコードする
表示問題、すなわち表示アーチファクトではありませんチェックURL-encoded form data
に血みどろの詳細を探し、値が正しいですかそれは間違って表示される " - ありがとう。それが問題です!残念ながら、これは公開フォーラムであり、デフォルトのエンコーディングを変更することはできません。これはiso-8859-1エンコーディングで応答します。 rendered.encode( 'iso-8859-1')を使うことができますか?ありがとう。 – TheMagician
ヘッダーに文字セットを設定しようとしました – jfs
それは動作しませんでした。 – TheMagician