2009-06-30 14 views
5

मेरे पास कुछ फ्रांसीसी अक्षरों (é, è, à ...) एक django टेम्पलेट में हैं, लेकिन जब यह django द्वारा लोड किया जाता है, तो एक यूनिकोडडेकोड त्रुटि अपवाद उठाया जाता है।एक django टेम्पलेट में फ्रेंच अक्षरों का उपयोग कैसे करें?

यदि मैं टेम्पलेट लोड नहीं करता लेकिन सीधे एक पायथन स्ट्रिंग का उपयोग करता हूं। यह ठीक काम करता है।

क्या डीजेंगो टेम्पलेट के साथ यूनिकोड का उपयोग करने के लिए कुछ करना है?

उत्तर

7

आप शायद गैर-यूनिकोड एन्कोडिंग, जैसे लैटिन -1 में टेम्पलेट को संग्रहीत कर रहे हैं। मेरा मानना ​​है कि Django मानता है कि डिफ़ॉल्ट रूप से टेम्पलेट यूटीएफ -8 में हैं (हालांकि इसे ओवरराइड करने की सेटिंग है)।

आपका संपादक यूटीएफ -8 एन्कोडिंग में टेम्पलेट फ़ाइल को सहेजने में सक्षम होना चाहिए (शायद पेज के रूप में सहेजें पर ड्रॉपडाउन के माध्यम से, हालांकि यह आपके संपादक पर निर्भर हो सकता है)। फ़ाइल को यूटीएफ -8 के रूप में दोबारा सहेजें, और त्रुटि दूर होनी चाहिए।

+2

पेडेंटिफिकेशन: लैटिन -1 यूटीएफ -8 की तुलना में अधिक" नो-यूनिकोड "नहीं है। दोनों यूनिकोड नहीं हैं, लेकिन एन्कोडिंग हैं। यूटीएफ -8 यूनिकोड के सभी यूनिकोड अक्षरों को एन्कोड कर सकता है, और लैटिन -1 नहीं कर सकता अभी भी यूनिकोड नहीं हैं। यह आपके उत्तर की वैधता को नहीं बदलता है, मैं किसी विशेष कारण के लिए केवल पैडेंटिक नहीं हूं।) –

+0

मैं सबकुछिक होने के लिए हूं, लेकिन मुझे यह इंगित करना चाहिए कि मैंने वाक्यांश "गैर- यूनिकोड एन्कोडिंग ", न केवल" गैर-यूनिकोड ", जो सटीक है। यूटीएफ -8 वास्तव में यूनिकोड डेटा के लिए एक एन्कोडिंग (कई में से एक) है, जबकि लैटिन -1 नहीं है, क्योंकि यह सभी संभावित यूनिकोड कोडपॉइंट्स का प्रतिनिधित्व नहीं कर सकता है। – Brian

+0

मेरा आईडीई ने अपनी फाइल को 'यूटीएफ -8' के रूप में प्रदर्शित किया और नोटपैड ++ में एक ही फाइल खोलने के बाद ही मैंने देखा कि यह वास्तव में 'बीओएम के बिना यूटीएफ -8' था। मैंने इसे सादा 'यूटीएफ -8' के रूप में सहेजा और यह काम किया। – darren

3

यह Django unicode documentation आपकी समस्या से संबंधित से है:

"लेकिन सामान्य स्थिति फाइल सिस्टम से टेम्पलेट्स को पढ़ने के लिए है, और यह एक मामूली जटिलता बनाता है: नहीं सभी फ़ाइल सिस्टम अपने डेटा को UTF-8 के रूप में एन्कोड की दुकान। यदि आपकी टेम्पलेट फाइलें यूटीएफ -8 एन्कोडिंग के साथ संग्रहीत नहीं हैं, तो डिस्क पर फ़ाइलों के एन्कोडिंग पर FILE_CHARSET सेटिंग सेट करें। जब Django टेम्पलेट फ़ाइल में पढ़ता है, तो यह डेटा को इस एन्कोडिंग से यूनिकोड में परिवर्तित कर देगा। (FILE_CHARSET सेट है डिफ़ॉल्ट रूप से 'utf-8' पर।)

DEFAULT_CHARSET सेटिंग रेंडर किए गए टेम्पलेट्स के एन्कोडिंग को नियंत्रित करती है। यह यूटीएफ -8 बी पर सेट है वाई डिफ़ॉल्ट। "

संबंधित मुद्दे