我从API调用中获取的JSON数据中包含一个字符\x96
当我进行API调用时,它会导致以下错误:
'ascii' codec can't encode character u'\x96' in position 56: ordinal not in range(128)
这种情况偶尔发生在API调用中 - 可能有5%的时间我猜这个无法解码的unicode数据。知道如何解码这些字符吗?
这是我的代码:
start = str(start)
limit = str(limit)
if sort_by:
url = self.base_url + specific_url + "?q=" + str(query) + "&filters=[[%22category_id%22,[" + category_id + "]]]" + "&start=" + start + "&limit=" + limit + "&sortby=" + sort_by + "&apikey=" + self.api_key
else:
url = self.base_url + specific_url + "?q=" + str(query) + "&filters=[[%22category_id%22,[" + category_id + "]]]" + "&start=" + start + "&limit=" + limit + "&apikey=" + self.api_key
response_json = self.web_fetch(url)
return simplejson.loads(response_json)
答案 0 :(得分:1)
simplejson.loads
必须使用unicode
对象才能生效。
这意味着您需要修改web_fetch()
函数以返回Unicode对象,或者如果您知道这是其编码,则可以将response_json
解码为UTF8。
response_json = response_json.decode('utf-8')