django HttpResponse和unicode

问题描述 投票:1回答:2

我正在使用django作为webapp的后端。我通过django发送json数据,它运行良好。然而,最近我开始处理非ascii数据,并注意到非ascii字符的一些不寻常的行为。在我的webapp中,我的代码如下所示:

def make_json():
  json_string = u{"start_location" : "5802 W 71st St Indianapolis‎ Indiana‎ 46278 United States", "lat" : 39.8819269, "lng" : -86.2631006, "timezone" : "America/Indiana/Indianapolis"}
  return HttpResponse(json_string, content_type='application/json')

Django对它没有任何问题,但是当我在浏览器(chrome)中查看它时,我看到的是:

{"start_location" : "5802 W 71st St Indianapolis‎ Indiana‎ 46278 United States", "lat" : 39.8819269, "lng" : -86.2631006, "timezone" : "America/Indiana/Indianapolis"}

我在这里做错了吗?我已经尝试将unicode对象编码为utf-8,然后将其提供给HttpResponse(),但它不会改变任何东西。

感谢您的帮助!

django json unicode non-ascii-characters
2个回答
6
投票

我想通了。希望任何有相同问题的人都可以谷歌这个。

解决方案是将content_type更改为:

return HttpResponse(json_string, content_type='application/json; charset=utf-8')

1
投票

这是我的贡献,返回模型使用UTF-8序列化为json

    dptos = Departamento.objects.all()
    json_list = list(dptos.values())   
    return JsonResponse(json_list,safe=False,json_dumps_params={'ensure_ascii':False})
© www.soinside.com 2019 - 2024. All rights reserved.