簡體   English   中英

Python請求:以非utf-8編碼提交JSON

[英]Python Requests: submit JSON in non utf-8 encoding

我必須將數據提交到Web服務,該服務使用配置了latin-1的MySQL服務器作為表排序規則。 該Web服務接收JSON有效負載並將一些數據存儲在數據庫中。 UTF-8是用於傳輸的JSON數據的正確編碼,但是Web服務未正確將其編碼為latin-1以便保存在數據庫中。

因此,當提交諸如{'Key':'ç'}之類的JSON時,Web服務會將其以錯誤的編碼存儲,並在Web頁面上顯示為

"The value of Key is 'ç'"

我正在尋找解決方法。

我的客戶端使用的是Python 3.5,並且使用的是Requests庫,該庫使用urllib3作為管道。 當我向請求提交字典時,它使用json庫將其轉換為字符串類型,而urllib3將其作為字節提交以通過網絡發送請求。

我可以讓Request提交帶有latin-1編碼的JSON對象字符串嗎?

有一種方法,您可以手動發送json數據:

a = {'Key': 'ç'}
data = json.dumps(a).encode("latin-1")
requests.post(url, data=data)

然后,您發送的內容是一個使用latin-1編碼的二進制字符串。 然后,您可以從服務器端對其進行解碼:

res.body.decode("latin-1")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM