यूनिकोड नॉर्मलाइज़ेशन के बारे में जानने के लिए आप जो कुछ भी कभी नहीं करना चाहते थे
विहित सामान्यीकरण
यूनिकोड में कुछ वर्णों को कूटबद्ध करने के कई तरीके शामिल हैं, जिनमें सबसे विशेष रूप से उच्चारण वर्ण हैं। कैनोनिकल सामान्यीकरण कोड बिंदुओं को एक विहित एन्कोडिंग रूप में बदलता है। परिणामी कोड बिंदु फोंट या रेंडरिंग इंजन में किसी भी कीड़े को रोकते हुए मूल वाले के समान दिखाई देने चाहिए।
कब इस्तेमाल करें
क्योंकि परिणाम एक समान दिखाई देते हैं, इसलिए इसे संग्रहीत या प्रदर्शित करने से पहले एक स्ट्रिंग में विहित सामान्यीकरण लागू करना हमेशा सुरक्षित होता है, जब तक कि आप इनपुट के समान बिट के लिए बिट नहीं होने के परिणामस्वरूप परिणाम को सहन कर सकते हैं।
Canonical normalization 2 रूपों में आता है: NFD और NFC। दोनों इस अर्थ में समतुल्य हैं कि कोई इन दो रूपों के बीच बिना नुकसान के रूप में परिवर्तित हो सकता है। एनएफसी के तहत दो तारों की तुलना करना हमेशा एनएफडी के तहत उनकी तुलना करने के समान परिणाम देगा।
NFD
NFD के वर्ण पूरी तरह से विस्तारित हैं। यह गणना करने के लिए तेज़ सामान्यीकरण फ़ॉर्म है, लेकिन अधिक कोड बिंदुओं में परिणाम (यानी अधिक स्थान का उपयोग करता है)।
यदि आप केवल दो तारों की तुलना करना चाहते हैं जो पहले से ही सामान्यीकृत नहीं हैं, तो यह पसंदीदा सामान्यीकरण फ़ॉर्म है जब तक कि आपको नहीं पता कि आपको संगतता सामान्यीकरण की आवश्यकता है।
एनएफसी
एनएफडी एल्गोरिथ्म चलाने के बाद जब संभव हो तो एनएफसी पुन: संयोजक कोड बिंदु। इसमें थोड़ा अधिक समय लगता है, लेकिन इसके परिणाम कम होते हैं।
संगतता सामान्यीकरण
यूनिकोड में कई पात्र शामिल हैं जो वास्तव में नहीं हैं, लेकिन विरासत चरित्र सेट में उपयोग किए गए थे। यूनिकोड ने इन्हें उन चरित्र सेटों में टेक्स्ट को यूनिकोड के रूप में संसाधित करने की अनुमति देने के लिए जोड़ा, और फिर बिना नुकसान के वापस परिवर्तित किया जाए।
संगतता सामान्यीकरण इन्हें "वास्तविक" वर्णों के संगत अनुक्रम में परिवर्तित करता है, और विहित सामान्यीकरण भी करता है। संगतता सामान्यीकरण के परिणाम मूल के समान नहीं दिखाई दे सकते हैं।
जिन वर्णों में फ़ॉर्मेटिंग जानकारी शामिल होती है उन्हें उन लोगों के साथ बदल दिया जाता है जो नहीं करते हैं। उदाहरण के लिए चरित्र ⁹
परिवर्तित हो जाता है 9
। दूसरों में प्रारूपण अंतर शामिल नहीं है। उदाहरण के लिए रोमन अंक चरित्र Ⅸ
को नियमित अक्षरों में परिवर्तित किया जाता हैIX
।
जाहिर है, एक बार यह परिवर्तन हो जाने के बाद, मूल चरित्र सेट में दोषरहित रूप से परिवर्तित होना संभव नहीं है।
कब इस्तेमाल करें
यूनिकोड कंसोर्टियम एक की तरह संगतता सामान्यीकरण की सोच का सुझाव देता है ToUpperCase
रूपांतरण की । यह कुछ ऐसा है जो कुछ परिस्थितियों में उपयोगी हो सकता है, लेकिन आपको इसे केवल विली-नीली लागू नहीं करना चाहिए।
एक उत्कृष्ट उपयोग का मामला एक खोज इंजन होगा क्योंकि आप शायद 9
मैच के लिए एक खोज चाहते हैं⁹
।
एक चीज जो आपको शायद नहीं करनी चाहिए वह है उपयोगकर्ता के लिए अनुकूलता सामान्यीकरण लागू करने का परिणाम।
NFKC / NFKD
संगतता सामान्यीकरण फ़ॉर्म NFKD और NFKC दो रूपों में आता है। उनका वही संबंध है जो एनएफडी और सी के बीच है।
NFKC में कोई स्ट्रिंग स्वाभाविक रूप से NFC में भी है, और NFKD और NFD के लिए भी यही है। इस प्रकार NFKD(x)=NFD(NFKC(x))
, और NFKC(x)=NFC(NFKD(x))
, आदि।
निष्कर्ष
यदि संदेह है, तो विहित सामान्यीकरण के साथ जाएं। एनएफसी या एनएफडी को अंतरिक्ष / स्पीड ट्रेड-ऑफ लागू के आधार पर चुनें, या उस चीज के आधार पर जो आप के साथ काम कर रहे हैं।