【发布时间】:2010-11-07 00:15:00
【问题描述】:
我在 django 模板中有一些法语字母(é、è、à...),但是当它被 django 加载时,会引发 UnicodeDecodeError 异常。
如果我不加载模板而是直接使用 python 字符串。它工作正常。
在 django 模板中使用 unicode 有什么办法吗?
【问题讨论】:
我在 django 模板中有一些法语字母(é、è、à...),但是当它被 django 加载时,会引发 UnicodeDecodeError 异常。
如果我不加载模板而是直接使用 python 字符串。它工作正常。
在 django 模板中使用 unicode 有什么办法吗?
【问题讨论】:
您可能将模板存储在非 unicode 编码中,例如 latin-1。我相信 Django 假定模板默认为 UTF-8(尽管有一个设置可以覆盖它)。
您的编辑器应该能够以 UTF-8 编码保存模板文件(可能通过另存为页面上的下拉菜单,但这可能取决于您的编辑器)。将文件重新保存为 UTF-8,错误应该会消失。
【讨论】:
UTF-8,只有在 Notepad++ 中打开同一个文件后,我才看到它实际上是 UTF-8 without BOM。我将它保存为普通的 UTF-8 并且它有效。
这是来自与您的问题相关的Django unicode documentation:
" 但是常见的情况是从文件系统中读取模板,这会产生一些复杂性:并非所有文件系统都将其数据存储为 UTF-8 编码。如果您的模板文件不是以 UTF-8 编码存储的,请设置FILE_CHARSET 设置为磁盘上文件的编码。当 Django 读入一个模板文件时,它会将数据从这个编码转换为 Unicode。(FILE_CHARSET 默认设置为 'utf-8'。)
DEFAULT_CHARSET 设置控制渲染模板的编码。默认设置为 UTF-8。 "
【讨论】: