【问题标题】:Unicode not rendering in Django-Rest-Framework browsable API in ChromeUnicode 未在 Chrome 中的 Django-Rest-Framework 可浏览 API 中呈现
【发布时间】:2016-08-01 15:37:18
【问题描述】:

我正在尝试使用 django-rest-framework 3.1.3 的可浏览 API 从我的 SQLite 数据库中显示一个 unicode 值 u'\u20b9'

我没有得到货币符号的预期值,它返回以下内容,具体取决于浏览器:

Chrome 49.0.2623.110(64 位):

可浏览 API:""(空白字符串)

JSON:"₹"

Safari 9.1 (10601.5.17.4):

可浏览的 API:

JSON:"₹"

卷曲:

JSON:

如何让它始终显示

【问题讨论】:

  • 原来是浏览器错误。

标签: python django unicode django-rest-framework content-type


【解决方案1】:

您可能会错过 Django 中可用的系统语言设置。根据您的堆栈(apache 或主管确实删除了默认系统设置),您需要明确定义它。

原因是,unicode 是 Python 内部特定的。您需要将 unicode 编码为输出格式。可以是 utf8 或任何 iso 代码。

请注意,这与 header# -*- coding: utf-8 -*- 不同,其目标是使用 utf-8 字符集将文件解码为 un​​icode。这并不意味着该文件代码中的任何输出都将使用 utf8 进行转换。

【讨论】:

  • 我在settings.py 中使用了sys.setdefaultencoding('utf8') 并且UnicodeEncodeError 消失了,但我仍然得到"₹" 而不是
  • iirc,这行不通,因为一些初始化已经完成,而且我已经看到 setdefaultencoding 需要技巧才能工作的地方(虽然不记得是哪些)
  • 我在问题中添加了一些附加信息,此时我认为这是浏览器呈现/标题问题,因为在向 URL 发出 CURL 请求时,我可以看到预期的 unicode 。可能与github.com/tomchristie/django-rest-framework/issues/2891 有关
猜你喜欢
  • 2016-03-24
  • 1970-01-01
  • 2016-03-31
  • 2013-01-15
  • 2013-12-27
  • 2020-06-26
  • 1970-01-01
  • 2016-03-24
  • 2015-04-28
相关资源
最近更新 更多