介面響應編碼格式為帶bom頭utf-8。直接獲取響應的text出現亂碼。
'''dinghanhua
2018-11
requests text與content,指定響應的encoding
亂碼解決方式:
1 獲取content再用utf-8-sig decode。
2 指定響應的編碼格式為utf-8-sig。再獲取text。
1 指定response的編碼格式為utf-8-sig
#2 獲取content,再utf-8-sig解碼utf-8-sig解碼
response.encoding = '
utf-8-sig
(response.text)
print(response.json()) #直接轉成json
print(response.content) #二進位制前3個字元就是bom頭import json也可以去掉bom頭之後用utf-8解碼r = response.content.decode('
utf-8-sig')
print(json.loads(r))
#如果不去掉bom頭用utf-8解碼,但json.loads()會報錯去掉bom頭3個字元
r = response.content[3:].decode('
utf-8')
print(json.loads(r))
r = response.content.decode('utf-8')
print(r.decode('
utf-8'))
print(json.loads(r.decode('
utf-8
')))
帶BOM的UTF 8和無BOM 的UTF 8的區別
utf 8 不需要 bom,儘管 unicode 標準允許在 utf 8 中使用 bom。所以不含 bom 的 utf 8 才是標準形式,在 utf 8 檔案中放置 bom 主要是微軟的習慣 順便提一下 把 utf 16 le 稱作 unicode 而又不詳細說明,這也是微軟的習慣 bom byte...
去除 UTF 8 檔案 BOM 頭
bom 全稱是 byte order mark 位元組順序標記 出現在文字檔案頭部,unicode 編碼標準中用於標識檔案是採用哪種格式的編碼。比如 當用記事本儲存乙個以 utf 8 編碼的檔案時,會自動在檔案開始自動插入三個不可見字元 0xef 0xbb 0xbf 但是通常情況下不需要這個頭部來識...
utf 8與utf 8無BOM的區別
utf 8 8 bit unicode transformation format 是一種針對unicode的可變長度字元編碼,又稱萬國碼。bom byte order mark,位元組序標記 utf 8不需要bom來表明位元組順序,但可以用bom來表明編碼方式。字元 zero width no b...