基本環境
使用 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