2014-09-22 69 views
0

我有一個編碼問題: 當我在網頁瀏覽器的輸入中鍵入字符'é'時,它被張貼爲%E9,它工作正常。另一方面,當我嘗試使用Python和請求庫發佈請求時,它將作爲%C3%A9發送。Http POST口音編碼

我該如何解決問題?

這裏是行不通

requests.post("http://localhost", message = {"text":'é'}) 

感謝

+0

這是寬字符。不知道如何改變它,堅持下去。 (見http://www.utf8-chartable.de/) – craniumonempty 2014-09-22 00:56:27

回答

3

%C3%A9代碼爲UTF-8編碼字符串的URL編碼版本:

>>> u'é'.encode('utf-8') 
'\xc3\xa9' 
>>> urllib.quote(u'é'.encode('utf-8')) 
'%C3%A9' 

進行明確編碼與latin-1字符串編碼(或類似):

>>> u'é'.encode('latin1') 
'\xe9' 
>>> urllib.quote(u'é'.encode('latin-1')) 
'%E9' 

requests.post("http://localhost", message={"text": u'é'.encode('latin-1')}) 
+0

很酷。我從來沒有用過python,所以我花了一些時間來篩選它。我知道這是unicode,但不知道該怎麼做轉換的人問。謝謝。 – craniumonempty 2014-09-22 01:20:51

+0

感謝您的解決方案!爲了記錄,最後一行是requests.post(「http:// localhost」,{「text」:u'é'.encode('latin-1')}),沒有關鍵字消息 – egt 2014-09-22 22:37:11