क्या कोई मुझे कुछ महत्वपूर्ण पहलुओं को प्रदान कर सकता है, मुझे सी # में यूनिकोड तारों को संभालने के दौरान अवगत होना चाहिए?सी # में यूनिकोड तारों को संभालने के लिए सर्वोत्तम प्रथाएं क्या हैं?
उत्तर
सी # (और सामान्य रूप से .NET) पारदर्शी रूप से यूनिकोड तारों को संभालते हैं, और आपको तब तक विशेष कुछ नहीं करना पड़ेगा जब तक कि आपके एप्लिकेशन को विशिष्ट एन्कोडिंग के साथ फ़ाइलों को पढ़ने/लिखने की आवश्यकता न हो। उन मामलों में, आप सिस्टम में कक्षाओं का उपयोग करके प्रबंधित स्ट्रिंग को अपनी पसंद के एन्कोडिंग के बाइट एरे में परिवर्तित कर सकते हैं। टेक्स्ट। एन्कोडिंग्स नेमस्पेस।
केवल पढ़ने और लिखने के दौरान एन्कोडिंग के बारे में सोचें। विभिन्न एन्कोडिंग में टेक्स्ट पढ़ने और लिखने के लिए टेक्स्ट रीडर और टेक्स्ट राइटर्स का उपयोग करें। यदि आपके पास कोई विकल्प है तो हमेशा यूटीएफ -8 का उपयोग करें।
भाषाओं और संस्कृतियों द्वारा भ्रमित न हों - यह यूनिकोड से एक पूरी तरह से अलग मुद्दा है।
.Net अपेक्षाकृत अच्छा i18n समर्थन है। आपको वास्तव में यूनिकोड के बारे में सोचने की ज़रूरत नहीं है जितना कि सभी नेट स्ट्रिंग्स और अंतर्निर्मित स्ट्रिंग फ़ंक्शन यूनिकोड के साथ सही काम करते हैं। ध्यान में रखना एकमात्र चीज यह है कि अधिकांश स्ट्रिंग फ़ंक्शंस, उदाहरण के लिए डेटटाइम.ToString(), डिफ़ॉल्ट रूप से थ्रेड की संस्कृति का उपयोग करें जो डिफ़ॉल्ट रूप से विंडोज संस्कृति है। आप वर्तमान थ्रेड पर या प्रत्येक विधि कॉल पर स्वरूपण के लिए एक अलग संस्कृति निर्दिष्ट कर सकते हैं।
एकमात्र समय यूनिकोड एक मुद्दा है जब बाइट्स से और एन्कोडिंग/डिकोडिंग तार।
ध्यान रखें कि सी # तार चार, यूटीएफ -16 कोड इकाइयों के अनुक्रम हैं। वे यूनिकोड कोड-पॉइंट्स हैं। कुछ यूनिकोड कोड बिंदुओं को दो चर की आवश्यकता होती है, और आपको इन वर्णों के बीच तारों को विभाजित नहीं करना चाहिए।
इसके अलावा, यूनिकोड कोड बिंदु एक भाषा 'चरित्र' बनाने के लिए गठबंधन कर सकते हैं - उदाहरण के लिए, 'यू' चर के बाद umlat Char। तो आप मनमानी कोड बिंदुओं के बीच तारों को विभाजित नहीं कर सकते हैं।
असल में, यह मुद्दों की गड़बड़ी है, जहां कोई भी समस्या केवल अभ्यास में उन भाषाओं को प्रभावित कर सकती है जिन्हें आप नहीं जानते हैं।
जैसा कि बताया गया है, .NET स्ट्रिंग्स यूनिकोड को पारदर्शी रूप से संभालती है। फ़ाइल I/O के अलावा, अन्य विचार डेटाबेस परत पर होगा। उदाहरण के लिए SQL सर्वर VARCHAR (गैर-यूनिकोड) और NVARCHAR (जो यूनिकोड को संभालता है) के बीच अंतर करता है। संग्रहित प्रक्रिया मानकों पर भी ध्यान देना होगा।
सिस्टम। स्ट्रिंग पहले से ही यूनिकोड को आंतरिक रूप से संभाला है ताकि आप वहां शामिल हो जाएं। सबसे अच्छा अभ्यास सिस्टम को पढ़ने और लिखने के दौरान System.Text.Encoding.UTF8Encoding का उपयोग करना होगा। यह फाइलों को पढ़ने/लिखने से कहीं अधिक है, हालांकि, नेटवर्क कनेक्शन समेत डेटा स्ट्रीम करने वाली कोई भी चीज़ एन्कोडिंग पर निर्भर होगी। यदि आप डब्ल्यूसीएफ का उपयोग कर रहे हैं, तो यह ज्यादातर बाइंडिंग के लिए यूटीएफ 8 में डिफ़ॉल्ट होगा (वास्तव में अधिकांश एएससीआईआई को बिल्कुल अनुमति नहीं देते हैं)।
यूटीएफ 8 एक अच्छा विकल्प है क्योंकि यह अभी भी पूरे यूनिकोड चरित्र सेट का समर्थन करता है, क्योंकि अधिकांश ASCII चरित्र सेट के लिए यह बाइट समानता है। इस प्रकार बेवकूफ अनुप्रयोग जो यूनिकोड का समर्थन नहीं करते हैं, आपके अनुप्रयोग डेटा को पढ़ने/लिखने का कुछ मौका है। जब आप विस्तारित वर्णों का उपयोग शुरू करते हैं तो वे एप्लिकेशन केवल विफल होने लगेंगे।
सिस्टम.Text.Encoding.Unicode यूटीएफ -16 लिखेंगे जो प्रति चरित्र कम से कम दो बाइट्स है, जो इसे ASCII के साथ बड़े और पूरी तरह से असंगत बनाता है। और System.Text.Encoding.UTF32 जैसा कि आप अनुमान लगा सकते हैं अभी भी बड़ा है। मुझे यूटीएफ -16 और 32 के असली दुनिया के उपयोग के मामले के बारे में निश्चित नहीं है, लेकिन जब आपके पास बड़ी संख्या में विस्तारित वर्ण हैं तो शायद वे बेहतर प्रदर्शन करेंगे।यह सिर्फ एक सिद्धांत है, लेकिन यदि यह सत्य है, तो जापानी/चीनी डेवलपर्स एक ऐसा उत्पाद बनाते हैं जिसका मुख्य रूप से उन भाषाओं में उपयोग किया जाएगा, यूटीएफ -16/32 बेहतर विकल्प मिल सकता है।
अधिक जानकारी इस सूत्र पर पाया जा सकता:
http://discuss.joelonsoftware.com/default.asp?dotnet.12.189999.12
- 1. जावा अपवादों को संभालने में सर्वोत्तम प्रथाएं
- 2. सी # में कक्षा के लिए == ऑपरेटर को लागू करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 3. भाषा अंतःक्रियाशीलता में सर्वोत्तम प्रथाएं क्या हैं?
- 4. बहुस्तरीय तैनाती के लिए टीम सिटी सर्वोत्तम प्रथाएं क्या हैं?
- 5. उद्देश्य-सी में स्थिर पुस्तकालयों के आकार को कम करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 6. इवेंट आईडी प्रबंधन के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 7. एक्सएमएल स्कीमा संस्करण के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 8. त्रुटि लॉग करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 9. बहु-किरायेदारी अनुप्रयोगों के निर्माण में सर्वोत्तम प्रथाएं क्या हैं?
- 10. सी # में सुरक्षित प्रकार के रूपांतरण के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 11. लंबी चल रही प्रक्रियाओं में चेतावनियों/त्रुटियों को ट्रैक करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 12. कस्टम फ़ाइल संरचनाओं के लिए सर्वोत्तम प्रथाएं
- 13. लूप में स्थितियां, सर्वोत्तम प्रथाएं?
- 14. चेतावनियों को संभालने के लिए सर्वोत्तम अभ्यास
- 15. आईफोन के लिए एपीआई लिखते समय त्रुटि प्रबंधन के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 16. जावा स्विंग डेस्कटॉप एप्लिकेशन को अंतर्राष्ट्रीय बनाने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 17. लाइब्रेरी में DI के लिए सर्वोत्तम प्रथाएं गुणों में प्रकार
- 18. एचडी में डेटा गहन पढ़ने और लिखने के लिए कौन सी सर्वोत्तम प्रथाएं हैं?
- 19. क्या कुछ सामान्य नेटवर्क प्रोग्रामिंग सर्वोत्तम प्रथाएं हैं?
- 20. जीडब्ल्यूटी: जीडब्ल्यूटी के साथ वेब 2.0 इंटरफ़ेस बनाने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 21. NHibernate का उपयोग करते समय सुरक्षा को लागू करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 22. PHP + MySQL अनुप्रयोगों को स्व-अद्यतन करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 23. nhibernate: समानता को लागू करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 24. पासवर्ड सर्वोत्तम प्रथाओं को संभालने?
- 25. .NET में थ्रेड स्थानीय संग्रहण का उपयोग करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 26. पीएचपी का उपयोग कर MySQL में संग्रहीत पासवर्ड एन्क्रिप्ट करने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 27. एक विश्वसनीय JSON प्रतिक्रिया में मेटाडेटा जोड़ने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 28. JSON वेब सेवाओं में त्रुटि प्रतिक्रिया भेजने के लिए सर्वोत्तम प्रथाएं क्या हैं?
- 29. ओपन सोर्स प्रोजेक्ट्स पर गिट रिपॉजिटरीज के लिए सर्वोत्तम प्रथाएं
- 30. कस्टम http उपयोगकर्ता-एजेंट तारों के लिए सर्वोत्तम अभ्यास?