UnicodeDecodeError с JSON - PullRequest
       3

UnicodeDecodeError с JSON

0 голосов
/ 28 ноября 2011

Я просто пытаюсь сгенерировать JSON из списка генерируемых хэшей.Вот как выглядит каждый объект в списке:

{ 'name': unicode(name) }

Вот как я его сериализую:

import simplejson as json

return HttpResponse(LazyEncoder().encode(output_list, ensure_ascii=False), mimetype="application/json")

class LazyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Promise):
            return force_unicode(obj)
        return super(LazyEncoder, self).default(obj)

Этот ленивый кодировщик был рекомендован документами Django здесь.

Вот ошибка, которую я получаю:

UnicodeDecodeError at /territories
'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)

Почему он пытается кодировать в ascii, хотя я специально спросил , а не to?

Stacktrace:

Request Method: GET
Request URL: http://localhost:8001/territories

Django Version: 1.3
Python Version: 2.7.1
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'locality']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/home/rfkrocktk/Desktop/locality/eggs/Django-1.3-py2.7.egg/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/home/rfkrocktk/Desktop/locality/src/locality/views.py" in generate_territories
  36.   output.extend(create_territories("IT", it_province.PROVINCE_CHOICES))
File "/home/rfkrocktk/Desktop/locality/src/locality/views.py" in create_territories
  50.       result.append({ 'abbr': unicode(territory[0]), 'name': unicode(territory[1]), 'country': country.id})

Exception Type: UnicodeDecodeError at /territories
Exception Value: 'ascii' codec can't decode byte 0xc3 in position 4: ordinal not in range(128)

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

По какой-то причине это сработало, когда я убрал вызов unicode() вокруг своих строк.Как бы то ни было, пока это работает:)

0 голосов
/ 28 ноября 2011

Попробуйте mimetype='application/json; charset=utf-8'.Может быть, он счастлив тогда.

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