我在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可以提供帮助......谢谢!
答案 0 :(得分:0)
致电response.read()
以获取回复数据。然后在try/except
做你的latin1解码和json加载。一般来说,如果你在异常处理程序中包含可能导致错误的操作并且适当地处理它们,Django永远不应该崩溃(至少将它们记录到某个地方以便将来在某个时候处理它们)。