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