簡體   English   中英

Json 返回特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM