python 帶BOM頭utf 8的響應解碼

2022-07-08 06:30:16 字數 1135 閱讀 1793

介面響應編碼格式為帶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

#

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

')))

帶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...