python 帶BOM頭utf-8的響應解碼


接口響應編碼格式為帶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')))

 


免責聲明!

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



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