【问题标题】:how to use french letters in a django template?如何在 django 模板中使用法语字母?
【发布时间】:2010-11-07 00:15:00
【问题描述】:

我在 django 模板中有一些法语字母(é、è、à...),但是当它被 django 加载时,会引发 UnicodeDecodeError 异常。

如果我不加载模板而是直接使用 python 字符串。它工作正常。

在 django 模板中使用 unicode 有什么办法吗?

【问题讨论】:

    标签: python django unicode


    【解决方案1】:

    您可能将模板存储在非 unicode 编码中,例如 latin-1。我相信 Django 假定模板默认为 UTF-8(尽管有一个设置可以覆盖它)。

    您的编辑器应该能够以 UTF-8 编码保存模板文件(可能通过另存为页面上的下拉菜单,但这可能取决于您的编辑器)。将文件重新保存为 UTF-8,错误应该会消失。

    【讨论】:

    • Pedantification:Latin-1 并不比 UTF-8 更“none-unicode”。两者都不是unicode,而是编码。 UTF-8 可以编码 Unicode 的所有 unicode 字符,Latin-1 不能,但它们仍然不是 unicode。它不会改变您答案的有效性,我只是无缘无故地迂腐。 ;)
    • 我完全赞成迂腐,但我应该指出我使用了“非 unicode 编码”这个短语,而不仅仅是“非 unicode”,这是准确的。 UTF-8 确实是 unicode 数据的一种编码(几种编码之一),而 latin-1 不是,因为它不能代表所有可能的 unicode 代码点。
    • 我的 IDE 将我的文件显示为 UTF-8,只有在 Notepad++ 中打开同一个文件后,我才看到它实际上是 UTF-8 without BOM。我将它保存为普通的 UTF-8 并且它有效。
    【解决方案2】:

    这是来自与您的问题相关的Django unicode documentation

    " 但是常见的情况是从文件系统中读取模板,这会产生一些复杂性:并非所有文件系统都将其数据存储为 UTF-8 编码。如果您的模板文件不是以 UTF-8 编码存储的,请设置FILE_CHARSET 设置为磁盘上文件的编码。当 Django 读入一个模板文件时,它会将数据从这个编码转换为 Unicode。(FILE_CHARSET 默认设置为 'utf-8'。)

    DEFAULT_CHARSET 设置控制渲染模板的编码。默认设置为 UTF-8。 "

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2020-07-07
      • 2013-08-09
      • 2023-03-31
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多