Django: Получение ошибки кодирования Python при обработке ответа HTTP на Latin1? - PullRequest
1 голос
/ 31 марта 2010

Я работаю в Django и использую urllib2 и simplejson для анализа некоторой информации из API.

Проблема заключается в том, что API возвращает информацию в кодировке Latin-1, и время от времени появляется символ, который вызывает ужасный сбой Django с ошибкой кодирования. Это мой код:

get_person_id_url = "http://www.domain.com/api/get?" + \
    "key=KEY&num="+ urllib2.quote(number) + "&always_return=true&output=js"
request = urllib2.Request(get_person_id_url, None, {'Referer': ''})
response = urllib2.urlopen(request)
results = json.load(response)
person_id = results["person_id"]

Я знаю, что могу использовать что-то вроде этого, чтобы превратить строки Latin1 в UTF8:

responseString = responseString.decode('latin1').encode('utf-8')

но, похоже, это работает только со строками, поэтому я не совсем уверен, как и где применять его в приведенном выше коде. Что я должен декодировать и где отлавливать любые ошибки, прежде чем они появятся?

К сожалению, я не помню, какой API-вызов нужно сделать, чтобы вернуть персонажа, который потерпит крах Django - поэтому я не могу провести много тестов, прежде чем он будет запущен. Я надеюсь, что StackOverflow может помочь ... Спасибо!

1 Ответ

0 голосов
/ 31 марта 2010

Позвоните response.read(), чтобы получить данные ответа. Затем в try/except сделайте свое латинское 1 декодирование и загрузку json. В общем случае Django никогда не должен аварийно завершать работу, если вы оберните потенциально вызывающие ошибки операции в обработчиках исключений и позаботитесь о них соответствующим образом (по крайней мере, зарегистрируйте их где-нибудь, чтобы вы могли иметь дело с ними в будущем).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...