json网页的Unicode解码错误



事情就是这样,我在python中解码一些unicode遇到了问题

具体来说,这个网页:xkcd.com/403/info.0.json

相关部分为Paul Erdu00c5u0091s!

当我通过json解码器运行它时,unicode被解码,但不使用正确的编解码器

我正在使用一行代码:

requests.get("http://xkcd.com/403/info.0.json").json()["alt"][-12:]

得到'Paul ErdÅx91s!'这显然不是我想要的

有什么想法,我可以做什么来解决它?

要修复该JSON,您需要编码为Latin-1(因为它天真地转码字节),然后从UTF-8解码。

两次。因为它是双破的

>>> json.loads('"Erdu00c3u0085u00c2u0091s!"')
u'Erdxc3x85xc2x91s!'
>>> json.loads('"Erdu00c3u0085u00c2u0091s!"').encode('latin-1').decode('utf-8')
u'Erdxc5x91s!'
>>> json.loads('"Erdu00c3u0085u00c2u0091s!"').encode('latin-1').decode('utf-8').encode('latin-1').decode('utf-8')
u'Erdu0151s!'
>>> print json.loads('"Erdu00c3u0085u00c2u0091s!"').encode('latin-1').decode('utf-8').encode('latin-1').decode('utf-8')
Erdős!

相关内容

最新更新