事情就是这样,我在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!