python 帶BOM utf-8的響應解碼
阿新 • • 發佈:2018-11-25
style req class 出現 16px ron mage .text 就是
接口響應編碼格式為帶BOM頭utf-8。直接獲取響應的text出現亂碼。
‘‘‘
dinghanhua
2018-11
requests text與content,指定響應的encoding
‘‘‘
api = ‘http://testapi‘
response = requests.get(api) print(response.text)
亂碼
解決方式:
1 獲取content再用utf-8-sig decode。
2 指定響應的編碼格式為utf-8-sig。再獲取text。
1 指定response的編碼格式為utf-8-sig
#utf-8-sig解碼 response.encoding = ‘utf-8-sig‘
print(response.text)
print(response.json()) #直接轉成json
2 獲取content,再utf-8-sig解碼
print(response.content) #二進制
前3個字符就是BOM頭
import json
r = response.content.decode(‘utf-8-sig‘) print(json.loads(r))
也可以去掉BOM頭之後用utf-8解碼
#去掉bom頭3個字符 r = response.content[3:].decode(‘utf-8‘) print(json.loads(r))
如果不去掉BOM頭用utf-8解碼,但json.loads()會報錯
r = response.content.decode(‘utf-8‘) print(r.decode(‘utf-8‘)) print(json.loads(r.decode(‘utf-8‘)))
python 帶BOM utf-8的響應解碼