0

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

1 回答 1

1

simplejson.loads必须使用一个unicode对象才能使其工作。

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

response_json = response_json.decode('utf-8')
于 2013-01-06T13:17:51.273 回答