0

Python cgiスクリプトは、コンテンツタイプがapplication/x-www-form-urlencodedのPOST XMLHttpRequestを受け取ります。値はエンコードされません。 これは次のようになりますのchromeの開発ツールでCGI Pythonの特殊文字\ xe4でないä

xhr.open("POST", "URL", true); 
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xhr.send('RID=123&RName=Bäcker'); 

、データソース内のフォームデータソースに次のようになり:解析されたビューで

RID = 123 & RNAME =バッカー

または、このように:

RID:123

RNAME:助っ人

のpython3スクリプトのFieldStorageでフォームを取得する:

#! /usr/bin/env python3  
# -*- coding: UTF-8 -*- 
import cgi 
myform = cgi.FieldStorage() 
print(str(myform["RName"].value)) 

印刷出力がBの\ xe4ckerのですか? .encode( 'iso-8859-1')またはデコード( 'utf-8')を使用しようとしましたが、それほど成功していません。

正しく表示されるエンコードまたはコードタイプを変更するにはどうすればよいですか? str()関数にエンコーディングを追加

答えて

2

試してみてください。いくつかの試みの後

#! /usr/bin/env python3  
# -*- coding: UTF-8 -*- 
import cgi 
myform = cgi.FieldStorage() 
print(str(myform["RName"].value, encoding = 'iso-8859-1')) 
+0

、これは実用的なソリューションに私をリードしています。私はdesktop \ w chromeでテストして、問題はios safariに表示されました。異なるデバイスによって送られたフォームの間にはいくつかの違いがあるようです。このコードは 'str(myform [" RName "]。value).encode(" utf-8 ")' –