【发布时间】:2014-05-08 06:13:38
【问题描述】:
我在用python解析一个JSON文件,我知道是因为这个¥,
我收到了这个错误 当我使用 json.loads 时
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 106:
invalid start byte
但是我该如何解决呢?我要重新解码和编码吗?
¥是中国货币符号,但我不确定它属于哪个代码类别。
谢谢!
更新:
=====================
我想我的问题应该是,如果你看到这个符号,你是怎么猜到编码的。
这个问题的答案可能是:
如果您看到 ¥,则“utf-8”不起作用,请尝试“latin-1”。 这种理解正确吗?
【问题讨论】:
-
JSON 默认在 utf8 上运行。您必须先将字符串转换为 utf8。如果您不知道编码,那么您无能为力。
-
我试过了 json.loads(contents,encoding='latin1') 似乎工作。但如果有人能给出更全面的答案,将不胜感激!谢谢!
-
但是有什么你不明白的?您有一个不同编码的字符串,因此您在执行
json.loads时指定编码并且它可以工作。故事的结局。 -
@Niebieski 你不应该猜测编码。数据源应告诉您编码,例如,如果您从 Web 下载文件,则使用 HTTP 标头。
-
您真的需要查看您从何处获取 JSON。生成它的代码有一个错误(JSON 是 UTF-8),只有在所有其他方法都失败时才应该在消费者端修复它。
标签: python json encode google-finance