【发布时间】:2010-12-07 13:46:02
【问题描述】:
作为练习,我构建了一个查询 Google Suggest JSON API 的小脚本。代码很简单:
query = 'a'
url = "http://clients1.google.co.jp/complete/search?hl=ja&q=%s&json=t" %query
response = urllib.urlopen(url)
result = json.load(response)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x83 in position 0: invalid start byte
如果我尝试read() 响应对象,这就是我得到的:
'["a",["amazon","ana","au","apple","adobe","alc","\x83A\x83}\x83]\x83\x93","\x83A\x83\x81\x83u\x83\x8d","\x83A\x83X\x83N\x83\x8b","\x83A\x83\x8b\x83N"],["","","","","","","","","",""]]'
因此,当 python 尝试解码字符串时,会引发错误。这只发生在 google.co.jp 和日语中。我用不同的国家/语言尝试了相同的代码,但我没有遇到同样的问题:当我尝试反序列化对象时,一切正常。
- 我检查了响应标头,它们总是将 utf-8 指定为响应编码。
- 我使用在线解析器 (http://json.parser.online.fr/) 检查了 JSON 字符串,所有接缝都正常
有解决这个问题的想法吗?是什么让 JSON load() 函数阻塞?
提前致谢。
【问题讨论】: