【问题标题】:Django - text input resulting in wierd characters when rendering templateDjango - 渲染模板时文本输入导致奇怪的字符
【发布时间】:2012-06-19 02:20:43
【问题描述】:

我不确定要搜索什么,所以我希望社区可以为我指明正确的方向。

我的站点中有一个带有文本输入的模型表单。 在其中一个输入中,有人复制并粘贴了文本

温哥华营销界杰出的 Bob Rennie 问道:“如果不是 泡沫?

从此链接 http://blog.buzzbuzzhome.com/2012/05/vancouver-marketing-bob-rennie-bubble.html 您会注意到引号和撇号有些不同。

对象保存完好。

当模板渲染输出该字段时出现问题。我得到了:

温哥华营销界杰出人士 Bob Rennie 询问 1C 如果它是 19 岁怎么办 不是泡沫?

(注意1C19s应该在引号和撇号的位置)

我认为这可能是一个 utf-8 问题,但我的 html 文件顶部已经有这个问题

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

【问题讨论】:

  • "对象保存完好。"证明它。
  • 我做到了。没有产生错误,我查看了数据库中的相关条目。

标签: python django utf-8


【解决方案1】:

我认为在您返回响应之前,您应该先对 unicode 字符串进行编码。

In [17]: from django.template import Template, Context                                                                                                                   

In [18]: t = Template("{{ text }}")

In [19]: c = Context({'text': 'Vancouver marketing extraordinaire Bob Rennie asks “What if it’s not a bubble?'})                                                         

In [20]: print t.render(c)
Vancouver marketing extraordinaire Bob Rennie asks “What if it’s not a bubble?

In [21]: t.render(c)
Out[21]: u'Vancouver marketing extraordinaire Bob Rennie asks \u201cWhat if it\u2019s not a bubble?'

当我将 t.render(c).encode('utf-8') 写入 html 文件并添加其他元信息时,它会显示

【讨论】:

  • 啊,谢谢!原来这是因为对于应用程序的特定部分,我使用的是 render_to_string 方法。编码输出固定它。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 2021-03-27
  • 2018-08-27
  • 1970-01-01
  • 2021-05-19
相关资源
最近更新 更多