unicode - यूनिकोड के साथ कितने पात्र मैप किए जा सकते हैं?




utf-8 utf (4)

मैं यूनिकोड में स्पष्टीकरण के साथ सभी संभावित मान्य संयोजनों की गिनती के लिए पूछ रहा हूं।

1,111,998 : 17 विमान × प्रति विमान 65,536 वर्ण - 2048 सरोगेट्स - 66 गैर-चिकित्सक

ध्यान दें कि यूटीएफ -8 और यूटीएफ -32 सैद्धांतिक रूप से 17 से अधिक विमानों को एन्कोड कर सकते हैं, लेकिन सीमा यूटीएफ -16 एन्कोडिंग की सीमाओं के आधार पर प्रतिबंधित है।

109,384 कोड पॉइंट वास्तव में यूनिकोड 6.0 में असाइन किए जाते हैं।

मुझे यह भी समझ में नहीं आता कि निरंतर बाइट्स के पास प्रतिबंध क्यों हैं, भले ही उस चार साफ़ होने से बाइट शुरू हो जाए, यह कितना समय होना चाहिए।

यूटीएफ -8 में इस प्रतिबंध का उद्देश्य एन्कोडिंग self-synchronizing

एक counterexample के लिए, चीनी जीबी 18030 एन्कोडिंग पर विचार करें। वहां, पत्र ß को बाइट अनुक्रम 81 30 89 38 रूप में दर्शाया गया है, जिसमें अंकों 0 और 8 के एन्कोडिंग शामिल हैं। तो यदि आपके पास एक स्ट्रिंग-सर्चिंग फ़ंक्शन है जो इस एन्कोडिंग-विशिष्ट क्विर्क के लिए डिज़ाइन नहीं किया गया है, तो अक्षर 8 लिए एक खोज अक्षर ß भीतर एक झूठी सकारात्मक ß

यूटीएफ -8 में, ऐसा नहीं हो सकता है, क्योंकि लीड बाइट्स और ट्रेल बाइट्स के बीच गैर-ओवरलैप गारंटी देता है कि एक छोटे चरित्र की एन्कोडिंग कभी भी लंबे चरित्र के एन्कोडिंग के भीतर नहीं हो सकती है।

मैं यूनिकोड में स्पष्टीकरण के साथ सभी संभावित मान्य संयोजनों की गिनती के लिए पूछ रहा हूं। मुझे पता है कि एक char को 1,2,3 या 4 बाइट्स के रूप में एन्कोड किया जा सकता है। मुझे यह भी समझ में नहीं आता कि निरंतर बाइट्स के पास प्रतिबंध क्यों हैं, भले ही उस चार साफ़ होने से बाइट शुरू हो जाए, यह कितना समय होना चाहिए।


एक रूपक सटीक उत्तर देने के लिए, all of them

यूटीएफ -8 एन्कोडिंग में निरंतर बाइट्स "लाइन शोर" के चेहरे में एन्कोडेड ऑक्टेट स्ट्रीम के पुनर्संरचना के लिए अनुमति देता है। एन्कोडर को केवल बाइट के लिए स्कैन करने की आवश्यकता होती है जिसमें 0x80 और 0xBF के बीच कोई मान नहीं है, यह जानने के लिए कि अगला बाइट एक नए वर्ण बिंदु की शुरुआत है।

सिद्धांत रूप में, आज इस्तेमाल किए गए एन्कोडिंग उन पात्रों की अभिव्यक्ति की अनुमति देते हैं जिनकी यूनिकोड वर्ण संख्या 31 बिट तक लम्बाई तक है। व्यावहारिक रूप से, यह एन्कोडिंग वास्तव में ट्विटर जैसी सेवाओं पर लागू होती है, जहां अधिकतम लंबाई ट्वीट 4,340 बिट्स के डेटा तक पहुंच सकता है। (140 वर्ण [वैध और अमान्य], प्रत्येक बार 31 बिट्स।)


यूनिकोड 17 planes , 65,536 संभावित पात्रों (या 'कोड पॉइंट') में से प्रत्येक के लिए अनुमति देता है। यह कुल 1,114,112 संभावित पात्र देता है। वर्तमान में, इस स्थान के लगभग 10% आवंटित किए गए हैं।

इन कोड बिंदुओं को एन्कोड किए जाने के सटीक विवरण एन्कोडिंग के साथ भिन्न होते हैं, लेकिन आपका प्रश्न यह ध्वनि बनाता है जैसे आप यूटीएफ -8 के बारे में सोच रहे हैं। निरंतर बाइट्स पर प्रतिबंधों का कारण संभवतः अगले चरित्र की शुरुआत को ढूंढना आसान है (क्योंकि निरंतर वर्ण हमेशा 10xxxxxx के रूप में होते हैं, लेकिन प्रारंभिक बाइट इस फ़ॉर्म का कभी भी नहीं हो सकता है)।


यूनिकोड एन्कोडिंग नहीं है, एक चरित्र मैपिंग है। विकिपीडिया के अनुसार यूनिकोड में वर्तमान में 109242 विशिष्ट वर्ण हैं।





utf