【问题标题】:Django Rest Framework with UTF-8带有 UTF-8 的 Django Rest 框架
【发布时间】:2016-10-10 11:20:35
【问题描述】:

我正在使用 Django 1.10 和 Django Rest Framework 3
这是我对GET方法(列表)的看法:

class JSONResponse(HttpResponse):


def __init__(self, data, **kwargs):
    content = JSONRenderer().render(data)
    kwargs['content_type'] = 'application/json'
    super(JSONResponse, self).__init__(content, **kwargs)


@csrf_exempt
def news_list(request):
    if request.method == 'GET':
        news = News.objects.all()
        serializer = Newsserializer(news, many=True)
        return JSONResponse(serializer.data)

它工作得很好,并以Json 格式为我提供了所有行。
现在我想在我的专栏中使用UTF-8 字符。但是当我 GET 我所有的数据时,我看到像这样的字符 ★شسیببییبیسب
我该如何解决这个问题?

【问题讨论】:

  • 您是否在设置中设置了UNICODE_JSONdjango-rest-framework.org/topics/3.0-announcement/…
  • 它修复了شسیببییبیسب,但现在看起来像这样:`\u0634\u0633\u06cc\u0628\u0628\u06cc\u06cc`。我应该知道什么? @kkasramvd
  • 就是这样。现在您有了具有标准表示的 unicode 字符串,您可以使用适当的编码来查看您的预期表示。尽管 python std-out 的默认编码是 utf8 并且会显示解码后的字符串。如果你想在另一个控制台中表示字符串,你可能必须手动指定编码。
  • 如果您使用的是 python2.X 并且您的最终标准输出是 python shell 或基于 unix 的终端,请执行以下操作:print unicode(s, 'unicode-escape')。否则你需要解码字符串s.decode('utf8')
  • @kasramvd 感谢重播。

标签: python django utf-8 django-rest-framework


【解决方案1】:

感谢 Kasramvd,通过在设置中将 UNICODE_JSON 设置为 Ture 即可解决此问题。字符将是 Unicode,例如 \u06cc。那么:

s.decode('utf8')

将解决问题。 另请阅读UNICODE_JSON here

【讨论】:

  • 反正默认是True
猜你喜欢
  • 2018-02-11
  • 2019-05-01
  • 2015-05-10
  • 2023-03-17
  • 2018-08-06
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
相关资源
最近更新 更多