簡體   English   中英

在django中輸出utf-8個字符作為json

[英]Output utf-8 characters in django as json

我試圖輸出一些帶有西里爾字符的json。 但是,例如,而不是西里爾文AI獲得它的ascii代碼 - \\ u0410並不是json編碼器打破了東西。 如果我嘗試輸出ls變量本身,它已經顯示ascii表示。 嘗試以不同的方式對其進行編碼 - 解碼,但最終得到了完全混亂。

這是代碼:

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")

這是輸出:

{"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"}}

非空字符串被視為真值。

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

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

替換"False"與下面的行False

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM