2009-05-05 9 views
6

मैं Django जैसे कुछ ढांचे को पूरे स्थान पर यूनिकोड का उपयोग करके देखता हूं, ऐसा लगता है कि यह एक अच्छा विचार हो सकता है।क्या मेरे पायथन वेब ऐप सभी तारों के लिए यूनिकोड का उपयोग करना चाहिए?

दूसरी ओर, यह इन सभी अतिरिक्त 'आप हर जगह चारों ओर तैरने के लिए एक बड़ा दर्द लगता है।

यदि मैं ऐसा नहीं करता तो कोई समस्या क्या होगी?

क्या कोई समस्या है जो मैं करूँगा यदि मैं ऐसा करता हूं?

मैं अभी अपने ढांचे के रूप में पिलोन का उपयोग कर रहा हूं।

उत्तर

10

पायथन 3 में, सभी तार यूनिकोड हैं। इसलिए, आप इसके लिए u'' तारों का उपयोग करके इसके लिए तैयार कर सकते हैं, और फिर जब आप 2to3 टूल का उपयोग कर पाइथन 3 में अपग्रेड करते हैं तो सभी u एस गायब हो जाएंगे। और आप एक बेहतर स्थिति में होंगे क्योंकि आप पहले से ही यूनिकोड स्ट्रिंग के साथ अपने कोड का परीक्षण कर चुके होंगे। अधिक जानकारी के लिए

Text Vs. Data Instead Of Unicode Vs. 8-bit देखें।

19

आप ऐसा करके अजगर 2.6 में u'' बच सकते हैं:

from __future__ import unicode_literals 

कि 'string literals' कर देगा, यूनिकोड वस्तुओं होने के लिए जैसे यह अजगर 3 में है;

+0

बहुत बढ़िया। सुपर उपयोगी टिप। – baudtack

+0

+1 यह बहुत बुरा है इसे चयनित उत्तर के साथ जोड़ा नहीं जा सकता है। वे दोनों इस मुद्दे को हल करने के लिए 'सर्वश्रेष्ठ' उत्तर हैं। –

3

यदि मैं ऐसा नहीं करता तो कोई समस्या क्या होगी?

मैं जापान में एक पश्चिमी रहने वाला हूं, इसलिए मैंने पहले हाथ देखा है जो गैर-ASCII वर्णों के साथ काम करने के लिए आवश्यक है। यदि आप यूनिकोड स्ट्रिंग का उपयोग नहीं करते हैं तो समस्या यह है कि आपका कोड दुनिया के उन हिस्सों में निराशा होगी जो ए-जेड के अलावा कुछ भी उपयोग करते हैं। हमारी कंपनी ने कुछ वेब सॉफ़्टवेयर को कुल मिलाकर बिना किसी गड़बड़ के जापानी वर्ण करने के लिए निराशा की एक बड़ी सौदा की है।

अंग्रेजी बोलने वालों के लिए यह बहुत कम प्रयास करता है कि यूनिकोड कितना महान है, लेकिन यह वास्तव में सभी संस्कृतियों और भाषाओं के लिए कंप्यूटर को सुलभ बनाने के लिए काम का एक शानदार काम है।

"gotchas":

  1. सुनिश्चित करें कि आपके उत्पादन वेब पृष्ठों उपयोग में एन्कोडिंग राज्य ठीक से (जैसे Content-Encoding शीर्षलेख का उपयोग), फिर उत्पादन पर ठीक से सभी यूनिकोड तार सांकेतिक शब्दों में बदलना। पाइथन 3 यूनिकोड तार इस अधिकार को करने में एक बड़ा सुधार है।

  2. यूनिकोड तारों के साथ सबकुछ करें, और आउटपुट करते समय अंतिम क्षण में केवल एक विशिष्ट एन्कोडिंग में कनवर्ट करें। PHP जैसी अन्य भाषाएं यूनिकोड में हेरफेर करते समय बग से प्रवण होती हैं। यूटीएफ -8 फॉर्म। मान लें कि आपको यूनिकोड स्ट्रिंग को छोटा करना है। यदि यह आंतरिक रूप से यूटीएफ -8 रूप में है, तो जोखिम है कि आप एक बहु-बाइट चरित्र को आधे रास्ते से काट सकते हैं, जिसके परिणामस्वरूप कचरा उत्पादन होता है। पाइथन का यूनिकोड तारों का आंतरिक रूप से उपयोग इन गलतियों को करना कठिन बनाता है।

+1

हां। यदि आप * किसी * प्रकार के टेक्स्ट मैनिपुलेशन (उदाहरण के लिए पूंजीकरण बदलना, अक्षरों में शब्दों को काटना) करना चाहते हैं, तो पाइथन की यूनिकोड ऑब्जेक्ट्स का उपयोग करें या आपको दर्द महसूस होगा। –

1

गैर-ASCII वर्णों के साथ समस्याओं से बचने के लिए आंतरिक रूप से यूनिकोड का उपयोग करना एक अच्छा तरीका है। अपने आवेदन की सीमाओं में कनवर्ट करें (आने वाले डेटा को यूनिकोड, आउटगोइंग डेटा यूटीएफ -8 या जो भी हो)। कई मामलों में आपके लिए पिलोन रूपांतरण कर सकते हैं: उदा। नियंत्रक सुरक्षित रूप से यूनिकोड तार वापस कर सकते हैं; SQLAlchemy मॉडल यूनिकोड कॉलम घोषित कर सकते हैं।

आपके स्रोत कोड में स्ट्रिंग अक्षर के संबंध में: यू उपसर्ग आमतौर पर आवश्यक नहीं है। आप यूनिकोड ऑब्जेक्ट्स के साथ एएससीआईआई युक्त स्ट्र ऑब्जेक्ट्स को सुरक्षित रूप से मिश्रित कर सकते हैं। बस सुनिश्चित करें कि आपके सभी स्ट्रिंग अक्षर या तो शुद्ध ASCII हैं या आप "यूनिकोड" हैं।

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

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