[英]Json return with special characters
我從 api 返回一個帶有字符“\\ u0083”、“\\ u0087d”和“\\ u008d”的json。 我將編碼更改為 utf-8 和 ISO-8859-1 但我沒有成功,請有人幫忙以防萬一,因為我正在使用的 api 不會更改。
更改請求頭編碼,但不成功
例子:
''' "prop": "SÃ\O LUÃ\S", "prop": "RUA LUIZ GUIMARÃ\ES", "prop": "POÃ\O DA PANELA"
'''
您將 UTF-8 字節解碼為 ISO-8859-1。
'SÃO LUÍS' 編碼為 UTF-8 導致這些字節(符號是 Python,但原則適用於任何語言):
b'S\xc3\x83O LU\xc3\x8dS'
解碼為 ISO-8859-1 產生這個字符串:
'SÃ\x83O LUÃ\x8dS'
UTF-8 是多字節編碼,而 ISO-8859-1 是單字節編碼。 在這種情況下,UTF-8 編碼的 'Ã' 和 'Í' 的第一個字節是\\xc3
,它是 'Ã' 的 ISO-8859-1 編碼。 每個字符的第二個字節在 ISO-8859-1 中未定義,因此它們在解碼過程中保持不變。
假設這個損壞的數據是由 API 生成的,您將需要遍歷反序列化的 json 數據並將每個字符串編碼為 ISO-8859-1,然后將結果字節解碼為 UTF-8。
>>> bad = 'SÃ\u0083O LUÃ\u008dS'
>>> bad.encode('latin-1').decode('utf-8')
'SÃO LUÍS'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.