unicode - यूटीएफ-8 "चर-चौड़ाई एन्कोडिंग" कैसे काम करता है?




utf-8 character-encoding (2)

यूटीएफ -8 8 बिट बाइट्स का उपयोग कर स्मृति में यूनिकोड कोड पॉइंट्स, उन जादू यू + संख्याओं की अपनी स्ट्रिंग को संग्रहीत करने के लिए एक और प्रणाली थी। यूटीएफ -8 में, 0-127 से प्रत्येक कोड बिंदु एक बाइट में संग्रहीत किया जाता है। केवल 128 अंक और ऊपर कोड बिंदु 2, 3 का उपयोग करके संग्रहीत किए जाते हैं, वास्तव में, 6 बाइट तक।

निरपेक्ष न्यूनतम सॉफ्टवेयर डेवलपर से उद्धरण बिल्कुल, यूनिकोड और कैरेक्टर सेट्स के बारे में सकारात्मक रूप से जानना चाहिए (कोई बहाना नहीं!)

यूनिकोड मानक में पर्याप्त कोड-पॉइंट हैं जिनमें आपको सभी को स्टोर करने के लिए 4 बाइट्स की आवश्यकता है। यही यूटीएफ -32 एन्कोडिंग करता है। फिर भी यूटीएफ -8 एन्कोडिंग किसी भी तरह से "परिवर्तनीय-चौड़ाई एन्कोडिंग" नामक किसी चीज़ का उपयोग करके इन्हें बहुत छोटी रिक्त स्थान में निचोड़ती है।

वास्तव में, यह केवल एक बाइट में यूएस-एएससीआईआई के पहले 127 पात्रों का प्रतिनिधित्व करने का प्रबंधन करता है जो वास्तव में असली ASCII की तरह दिखता है, ताकि आप बहुत सारे एसीआईआई पाठ की व्याख्या कर सकें जैसे कि यह यूटीएफ -8 कुछ भी किए बिना किया गया हो। साफ़ - सुथरा तरीका। तो यह कैसे काम करता है?

मैं यहां अपने प्रश्न पूछने और जवाब देने जा रहा हूं क्योंकि मैंने इसे समझने के लिए थोड़ा सा पढ़ा है और मैंने सोचा कि यह किसी और को कुछ और बचा सकता है। इसके अलावा शायद कोई मुझे सही कर सकता है अगर मुझे इसमें कुछ गड़बड़ है।


प्रत्येक बाइट कुछ बिट्स के साथ शुरू होता है जो आपको बताता है कि यह एक बाइट कोड-पॉइंट, एक बहु-बाइट कोड बिंदु है, या बहु-बाइट कोड बिंदु की निरंतरता है। इस कदर:

0xxx xxxx    A single-byte US-ASCII code (from the first 127 characters)

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

110x xxxx    One more byte follows
1110 xxxx    Two more bytes follow
1111 0xxx    Three more bytes follow

अंत में, उन प्रारंभ कोडों का पालन करने वाले बाइट्स इस तरह दिखते हैं:

10xx xxxx    A continuation of one of the multi-byte characters

चूंकि आप बता सकते हैं कि आप किस तरह के बाइट को पहले कुछ बिट्स से देख रहे हैं, फिर भी अगर कुछ कहीं गड़बड़ हो जाता है, तो आप पूरे अनुक्रम को खो नहीं देते हैं।







multibyte