2011-11-27 46 views
0

我只是试图从我生成的哈希列表中生成一些JSON。下面是列表中的每个对象的样子:UnicodeDecodeError与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) 

推荐这懒散编码by the Django docs here.

这里是我得到的错误:

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

为什么它试图编码为ascii即使我s特意问到不是

堆栈跟踪:

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) 
+0

请为错误提供更好的堆栈跟踪。 –

+0

完成,stacktrace添加。 –

回答

0

由于某种原因,当我在我的字符串周围删除了对unicode()的呼叫时,它工作正常。无论如何,只要它有效:)

0

尝试mimetype='application/json; charset=utf-8'。那么也许它很开心。

+0

没有。那没有做到。 –