В качестве упражнения я создал небольшой скрипт, который запрашивает API Google Suggest JSON.Код довольно прост:
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 в качестве кодировки ответа.
- Я проверил строку JSON с помощью онлайн-анализатора (http://json.parser.online.fr/) и снова все швыОК
Есть какие-нибудь идеи для решения этой проблемы? Что заставляет функцию JSON load()
подавиться?
Заранее спасибо.