【问题标题】:Can't Display Special Characters Django/Python in Template/WebPage无法在模板/网页中显示特殊字符 Django/Python
【发布时间】:2026-01-18 07:15:01
【问题描述】:

我对特殊字符有疑问。

我正在使用 mysqldb 进行 mysql 查询。数据库本身和表格一样是 UTF-8 格式。查询的结果是,当将查询作为查询本身运行时,我得到正确的结果:Türkiye。

在 MysqlDB 中,我使用的是“charset = 'utf8', use_unicode = True” 我也有“# -- coding: utf-8 --” 在我的 python 文件的顶部.此外,我还将变量设置为

unicode(text)

但是,似乎无论我做什么,我都无法让文本显示为“Türkiye”而且它总是显示为“T\xfcrkiye”

现在,我可以简单地进行查找替换,但问题是,其他地方也使用了许多其他特殊字符。太多而无法可靠地使用查找/替换。我想要做的是让这个字符正确显示并存储在变量中作为“Türkiye”而不是“T\xfcrkiye”

感谢您的帮助!

【问题讨论】:

  • 让它显示在哪里?
  • 在网页本身/模板上
  • 您使用的是{{ text }},它只显示“T\xfcrkiye”,没有引号或任何其他字符?
  • 是的,就是这样。
  • 更具体地说,它也显示其他字符(当它们是其他字符时)但它显示 T\xfcrkiye 而不是 Türkiye 如果我在模板中简单地键入文本,它将显示正确。但是从查询中得到它,它没有。

标签: python mysql django utf-8 django-templates


【解决方案1】:
In [5]: a = u"T\xfcrkiye"

In [6]: print a
Türkiye

我认为您打印的是 str 而不是 unicode 字符串。试试:var = u'{}'.format(text)

【讨论】:

    【解决方案2】:

    在您的 HTML 页面/模板的顶部包含此内容

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

    您应该将请求作为 html 页面发送,否则我认为您将无法正确输出该字符。

    希望它有效!

    【讨论】:

    • 这似乎不起作用。顺便说一句,我注意到如果我将文本的行更改为:text.encode('utf-8') 它现在在网页上显示为t\xc3\xbcrkiye
    • 您可以尝试在模板中显示时使用 'latin-1' 对其进行编码 &gt;&gt;&gt; print u'\xce\xb1'.encode('latin-1') α 请参阅 str.encodeStandard Encoding 以支持更多语言和方言
    • 这样做给我一个错误'latin-1' codec can't encode character u'\u0131'正如我之前提到的,文本中还有许多其他特殊字符,我只是以Türkiye为例
    • 好吧,试试其他编码器,有些或其他会受到影响,这就是为什么我提供标准编码列表 latin-1 通常会处理许多特殊字母表尝试其他编码器,我相信某些编码器会匹配。
    • 我对此有点困惑,utf-8 应该处理那里的一切。问题是,如果我这样做并且只有单个字符串或字符并使用 utf-8 编码,它似乎工作正常,但是从这个查询中执行它时,由于某种原因它不会