调用API并解码某些字符时遇到问题(Django)

时间:2013-01-06 13:03:35

标签: python django json

我从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)

1 个答案:

答案 0 :(得分:1)

simplejson.loads必须使用unicode对象才能生效。

这意味着您需要修改web_fetch()函数以返回Unicode对象,或者如果您知道这是其编码,则可以将response_json解码为UTF8。

response_json = response_json.decode('utf-8')