我正在使用python来解析JSON文件,我知道这是因为这个¥,
我收到了这个错误 当我使用json.loads时
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 106:
invalid start byte
但我该如何解决呢?我会再次解码和编码吗?
¥是中国货币符号,但我不确定它属于哪个代码类别。
谢谢!
更新
====================
我认为我的问题应该是,如果您看到此符号,您如何猜测编码。
这个问题的答案可能是:
如果你看到¥,那么“utf-8”将无效,请尝试使用“latin-1”。 这种理解是否正确?
答案 0 :(得分:0)
使用以下代码解决了问题:
json.loads(contents,encoding='latin1')
我对编码很困惑,来源没有明确说明。
答案 1 :(得分:0)
真正的答案是,在一般情况下,您无法确定未知数据的编码。
鉴于上下文,例如英文文本,您有时可以猜测,例如c?rrupted
已将“o”替换为“?”,但如果您没有这种上下文,则甚至无法确定哪些字节错误。
对于您的具体示例,您提出错误的方法。如果您看到yen sign,您使用哪种编码来查看数据?如果它是Latin-1,那么你看的是0xA5的字节值。该值可以是looked up;你可以看看v,¥,¸,Ë,Í,Ñ,Ą,±,ċ,Ĩ,Ľ,ź,Β,Ξ,ξ中的任何一个,Ѕ,Ц,е,Ґ,Ҙ, Í,%,4,ฅ,“,•,₯,╔, أ,或多字节编码中的片段。
如果产生未知数据的程序或组织可用,您可以与人交谈和/或试验该软件;但如果找不到权威的答案,你最终只会猜测或放弃。
现代格式需要已知编码,并拒绝明显违反该格式的输入。