在 django 模板中显示 ASCII 字符(python 2)
Posted
技术标签:
【中文标题】在 django 模板中显示 ASCII 字符(python 2)【英文标题】:Show ASCII characters in django template (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 之间是完全不同的。
【参考方案1】:
最后我用
解决了myString.decode('latin1')
正如 Joel Goldstick 所说,我必须检查我的数据库,因为有些表是用 utf-8 编码的,有些是用 latin1 编码的,我不知道。
将我的 mysql 表字符集更改为 CHARSET=utf8mb4 也不起作用。
【讨论】:
以上是关于在 django 模板中显示 ASCII 字符(python 2)的主要内容,如果未能解决你的问题,请参考以下文章