2009-06-30 39 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默認。 「