就像事情一样,我在解码python中的一些unicode时遇到问题
具体来说,这个网页:xkcd.com/403/info.0.json
相关部分为Paul Erd\u00c5\u0091s!
当我通过json解码器运行时,unicode被解码,但没有使用正确的编解码器
我目前正在使用单行:
requests.get("http://xkcd.com/403/info.0.json").json()["alt"][-12:]
得到'Paul ErdÅ\x91s!'
这显然不是我想要的
关于我能做些什么来修复它的想法?
答案 0 :(得分:1)
要解决你需要编码为Latin-1的JSON(因为它天真地转码字节)然后从UTF-8解码。
<强>两次。因为它是双重的。
>>> json.loads('"Erd\u00c3\u0085\u00c2\u0091s!"')
u'Erd\xc3\x85\xc2\x91s!'
>>> json.loads('"Erd\u00c3\u0085\u00c2\u0091s!"').encode('latin-1').decode('utf-8')
u'Erd\xc5\x91s!'
>>> json.loads('"Erd\u00c3\u0085\u00c2\u0091s!"').encode('latin-1').decode('utf-8').encode('latin-1').decode('utf-8')
u'Erd\u0151s!'
>>> print json.loads('"Erd\u00c3\u0085\u00c2\u0091s!"').encode('latin-1').decode('utf-8').encode('latin-1').decode('utf-8')
Erdős!
Smack Randall对我来说,是吗?