【问题标题】:Show ASCII characters in django template (python 2)在 django 模板中显示 ASCII 字符(python 2)
【发布时间】:2016-08-01 10:27:23
【问题描述】:

我试图在模板中显示单词“Año”,但我得到一个空字符串。

我有

# -*- coding: utf-8 -*-

在我的views.py开头

在我看来我已经尝试过了:

 unicode(myString)

 myString.encode(encoding='UTF-8')

我已经在我的模板中尝试过:

 {{n.name|safe}}

这些方法都不适合我。

在我的 mysql 表中,这个词很好。

在我看来,我得到这样的数据:

cursorMYSQL.execute(query)
table_names = cursorMYSQL.fetchall()

在我的模板中:

{%if table_names%}
    {% for n in table_names %}
        <option value="{{n.name}}" name="{{n.name}}">{{n.name}}</option>
    {% endfor %}
{%endif%}

【问题讨论】:

  • django 在显示 unicode 方面没有问题,问题可能与您在上下文中传递 n 的方式有关,您应该在视图中展示您是如何做到的
  • 请注意,# -*- coding: utf-8 -*- 只是告诉 Python 解析器脚本源的编码使用 UTF-8,这使它能够正确解释脚本本身中的 UTF-8 字符串文字。它对脚本处理 Unicode 的方式没有影响。您可能会发现这篇文章很有帮助:Pragmatic Unicode,由 SO 资深人士 Ned Batchelder 撰写。
  • 只是一个问题:为什么直接从 SQL 游标中获取 Django 中的数据?你不使用 ORM?
  • @KlausD。是的,那是另一个故事,长话短说,我被要求这样做,仅此而已。
  • 通过使用unicode() 函数,我假设您使用的是 Python 2。您应该始终在 Unicode 问题中提及 Python 版本(最好通过适当的标签) , 因为 Unicode 处理在 Python 2 和 Python 3 之间是完全不同的。

标签: python django python-2.7 character-encoding django-templates


【解决方案1】:

最后我用

解决了
myString.decode('latin1')

正如 Joel Goldstick 所说,我必须检查我的数据库,因为有些表是用 utf-8 编码的,有些是用 latin1 编码的,我不知道。

将我的 mysql 表字符集更改为 CHARSET=utf8mb4 也不起作用。

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 2014-12-17
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多