Lex*_*.KG 7 python django encoding json utf-8
我试图输出一些带有西里尔字符的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")
Run Code Online (Sandbox Code Playgroud)
这是输出:
{"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"}}
Run Code Online (Sandbox Code Playgroud)
非空字符串被视为真值.
>>> bool("False")
True
>>> bool("")
False
>>> print(json.dumps(u'\u0411', ensure_ascii="False"))
"\u0411"
>>> print(json.dumps(u'\u0411', ensure_ascii=False))
"?"
Run Code Online (Sandbox Code Playgroud)
替换"False"为以下行False.
return HttpResponse(json.dumps(dataset, ensure_ascii="False"), content_type="application/json; encoding=utf-8")
# ^^^^^^^ to False
Run Code Online (Sandbox Code Playgroud)