2009-06-30 40 views
5

我在django模板中有一些法文字母(é,è,à...),但是当它由django加载时,会引发UnicodeDecodeError异常。如何在django模板中使用法语字母?

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

有没有办法使用django模板使用unicode?

回答

7

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

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

+2

Pedantification:Latin-1并不比UTF-8更”非Unicode“,它们都不是unicode,而是编码UTF-8可以编码Unicode的所有Unicode字符,而Latin-1只能编码但它不会改变你的答案的有效性,我只是因为没有特别原因而迂腐了;) – 2009-06-30 13:27:57

3

这是关系到你的问题Django unicode documentation

“但常见的情况是,从文件系统读取的模板,这将创建一个稍微复杂:不是所有的文件系统存储编码为UTF-8的数据。如果您的模板文件没有以UTF-8编码存储,请将FILE_CHARSET设置为磁盘上文件的编码。当Django读取模板文件时,它会将此编码中的数据转换为Unicode(设置为FILE_CHARSET)。默认为'utf-8')

DEFAULT_CHARSET设置控制渲染模板的编码,设置为UTF-8 b y默认。 “