2009-06-30 28 views
5

Ich habe einige französische Buchstaben (é, è, à ...) in einer Django-Vorlage, aber wenn es von Django geladen wird, wird eine UnicodeDecodeError-Ausnahme ausgelöst.Wie benutzt man französische Buchstaben in einer Django-Vorlage?

Wenn ich die Vorlage nicht laden, sondern direkt eine Python-Zeichenfolge verwenden. Es funktioniert gut.

Gibt es etwas zu tun, um Unicode mit Django-Vorlage zu verwenden?

Antwort

7

Sie speichern die Vorlage wahrscheinlich in einer Nicht-Unicode-Codierung, z. B. latin-1. Ich glaube, Django nimmt an, dass Vorlagen standardmäßig in UTF-8 sind (obwohl es eine Einstellung gibt, die dies überschreibt).

Ihr Editor sollte in der Lage sein, die Vorlagendatei in der UTF-8-Kodierung zu speichern (wahrscheinlich über ein Dropdown-Menü auf der Seite Speichern unter, obwohl dies von Ihrem Editor abhängen kann). Speichern Sie die Datei erneut als UTF-8 und der Fehler sollte verschwinden.

+2

Pedantifikation: Latin-1 ist nicht mehr" None-Unicode "als UTF-8. Beide sind nicht Unicode, sondern Kodierungen. UTF-8 kann alle Unicode-Zeichen von Unicode und Latin-1 können nicht aber sie sind immer noch nicht Unicode. Es ändert nicht die Gültigkeit Ihrer Antwort, ich bin nur ohne besonderen Grund pedantisch.;) –

+0

Ich bin für alle pedantisch, aber ich sollte darauf hinweisen, dass ich den Ausdruck "nicht Unicode-Kodierung ", nicht nur" Nicht-Unicode ", die genau ist. UTF-8 ist in der Tat eine Kodierung (eine von mehreren) für Unicode-Daten, während Latin-1 nicht ist, da es nicht alle möglichen Unicode-Kodepunkte darstellen kann. – Brian

+0

My IDE hat meine Datei als 'UTF-8' angezeigt und erst nachdem ich dieselbe Datei in Notepad ++ geöffnet habe, habe ich gesehen, dass es tatsächlich 'UTF-8 ohne BOM' war. Ich habe es als'UTF-8' gespeichert und es hat funktioniert. – darren

3

Dies ist aus den Django unicode documentation Bezug auf Ihr Problem:

"Aber der gemeinsame Fall ist Vorlagen aus dem Dateisystem zu lesen, und das schafft eine leichte Komplikation: nicht alle Dateisysteme als UTF-8 codierten ihre Daten speichern. Wenn Ihre Vorlagendateien nicht mit einer UTF-8-Kodierung gespeichert werden, setzen Sie die Einstellung FILE_CHARSET auf die Kodierung der Dateien auf der Festplatte.Wenn Django eine Vorlagendatei einliest, werden die Daten aus dieser Kodierung in Unicode konvertiert (FILE_CHARSET ist eingestellt) standardmäßig auf 'utf-8'.)

Die Einstellung DEFAULT_CHARSET steuert die Kodierung von gerenderten Vorlagen, die auf UTF-8b eingestellt ist y Standard "