requests Use body.encode('utf-8') if you want to send it encoded in UTF-8


基本環境

使用 requests 模塊發送 post 請求,請求體包含中文報錯

系統環境:centos7.3

python版本:python3.6.8

請求代碼:

// 得到中文
param_json = param and json.dumps(param, ensure_ascii=False)

with requests.Session() as session:
    resp = session.post(url, data=param_json, timeout=HTTP_POST_TIMEOUT, headers=headers, **kwargs)

漢字報錯,報錯詳細內容: 'latin-1' codec can't encode characters in position 545-547: Body ('未識別') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8

 

解決方法

數據在網絡中都是通過字節數據進行傳輸的, 在發送數據時, requests 模塊需要將字符串編碼成 bytes 進行傳輸.

而請求體 body 里面有漢字,requests里邊的 URL 編碼方式默認是 拉丁 編碼,無法對中文內容進行編碼

解決方式就是手動使用 utf-8 字符集對 data 進行編碼.

// 得到中文
param_json = param and json.dumps(param, ensure_ascii=False)

with requests.Session() as session:
    resp = session.post(url, data=param_json.encode("utf-8"), timeout=HTTP_POST_TIMEOUT, headers=headers, **kwargs)

 

參考腳本之家:https://www.jb51.net/article/140386.htm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM