2009-06-30 8 views
5

Ho alcune lettere francesi (é, è, à ...) in un modello django ma quando viene caricato da django, viene sollevata un'eccezione UnicodeDecodeError.come utilizzare le lettere francesi in un modello django?

Se non carico il modello ma utilizzo direttamente una stringa python. Funziona bene.

C'è qualcosa da fare per usare unicode con template django?

risposta

7

Probabilmente si sta memorizzando il modello in una codifica non Unicode, ad esempio latin-1. Credo che Django presuma che i modelli siano in UTF-8 di default (anche se c'è un'impostazione per sovrascriverli).

L'editor deve essere in grado di salvare il file modello nella codifica UTF-8 (probabilmente tramite un menu a discesa nella pagina Salva come, anche se ciò potrebbe dipendere dall'editor). Ri-salva il file come UTF-8 e l'errore dovrebbe andare via.

+2

Pedantificazione: Latin-1 non è più" none-unicode "di UTF-8. Entrambi non sono unicode, ma codifiche UTF-8 può codificare tutti i caratteri Unicode Unicode e Latin-1 non può che essi non sono ancora unicode, non cambia la validità della tua risposta, sono semplicemente pedante per nessun motivo particolare;) –

+0

Sono tutto per essere pedante, ma dovrei sottolineare che ho usato la frase "non- codifica unicode ", non solo" non-unicode ", che è accurato, UTF-8 è in effetti una codifica (una di più) per dati unicode, mentre latin-1 non lo è, in quanto non può rappresentare tutti i codepoint unicode possibili – Brian

+0

My IDE ha mostrato il mio file come 'UTF-8' e solo dopo aver aperto lo stesso file in Notepad ++ ho visto che era in effetti' UTF-8 senza BOM'. L'ho salvato come semplice 'UTF-8' e funzionava. – darren

3

Questo è dal Django unicode documentation relative al tuo problema:

"Ma il caso più comune è quello di leggere i modelli dal filesystem, e questo crea una piccola complicazione: non tutti i file system conservano le loro dati codificati come UTF-8. Se i file del modello non sono memorizzati con una codifica UTF-8, impostare l'impostazione FILE_CHARSET sulla codifica dei file sul disco Quando Django legge un file modello, convertirà i dati da questa codifica in Unicode. (FILE_CHARSET è impostato per impostazione predefinita 'utf-8').

L'impostazione DEFAULT_CHARSET controlla la codifica dei modelli di rendering. Questa impostazione è impostata su UTF-8 b Di default. "

Problemi correlati