2013-12-18 12 views
6

Bazı json çıktı içinde kiril karakterlerle çalışıyorum. Ancak, örneğin, yerine, kirletmek yerine ascii kodu aldım - \ u0410 Ve bu şeyleri kıran json kodlayıcı değil. Eğer ls değişkeninin kendisini çıkarmaya çalışırsam, zaten ascii gösterimini gösterir. Farklı yollarla kodlamayı çözmeyi denedim, ancak tamamıyla karışıklık sorunu yaşadı.Çıktı utf-8 karakter django olarak json olarak

{"Status": 1, "Message": "Success", "Response": 
{"Data": [{"id": 1, "name": "1\u0410"}, 
{"id": 2, "name": "1\u0411"}, 
{"id": 3, "name": "1\u0412"}, 
{"id": 4, "name": "2\u0410"}, 
{"id": 5, "name": "2\u0411"}, 
{"id": 6, "name": "2\u0412"}], "Type": "class"}} 

cevap

7

Olmayan boş dize tedavi edilir olarak gerçek değeri: Burada

def grades(request): 
grades = Grades.objects.all() 

Status = 0 
Message = 'No records' 
dataset = {} 
Response = {} 
Response['Type'] = 'class' 
Response['Data'] = {} 
x = '' 

if grades.exists() : 
    Status = 1 
    Message = 'Success' 
    ls = list() 
    for grade in grades: 
     dataitem = {} 
     dataitem['id'] = grade.id 
     dataitem['name'] = u'' + str(grade.grade) + grade.letter 
     #x = x + 
     ls.append(dataitem) 
    Response['Data'] = ls 

dataset['Status'] = Status 
dataset['Message'] = Message 
dataset['Response'] = Response 

return HttpResponse(json.dumps(dataset, ensure_ascii="False"), content_type="application/json; encoding=utf-8") 

çıktı: İşte

kodudur.

>>> bool("False") 
True 
>>> bool("") 
False 

>>> print(json.dumps(u'\u0411', ensure_ascii="False")) 
"\u0411" 
>>> print(json.dumps(u'\u0411', ensure_ascii=False)) 
"Б" 

False ile aşağıdaki satırda "False" değiştirin.

return HttpResponse(json.dumps(dataset, ensure_ascii="False"), content_type="application/json; encoding=utf-8") 
#             ^^^^^^^ to False 
+0

Çok teşekkürler! Böyle aptalca bir hatam. –