1. 程式人生 > >python 帶BOM utf-8的響應解碼

python 帶BOM utf-8的響應解碼

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的響應解碼