एक कंप्यूटर के लिए पाठ और संख्याओं को संग्रहीत करने में सक्षम होने के लिए जो मनुष्य समझ सकते हैं, एक कोड होने की आवश्यकता है जो रूपांतरित करता है पात्र संख्या में। यूनिकोड मानक चरित्र कूटबन्धन का उपयोग करके ऐसे कोड को परिभाषित करता है।
कारण वर्ण एन्कोडिंग इतना महत्वपूर्ण है कि प्रत्येक उपकरण समान जानकारी प्रदर्शित कर सकता है। एक कस्टम वर्ण एन्कोडिंग योजना एक कंप्यूटर पर शानदार ढंग से काम कर सकती है, लेकिन समस्या तब होगी जब आप उसी पाठ को किसी और को भेजेंगे। यह नहीं पता होगा कि आप क्या बात कर रहे हैं जब तक कि यह एन्कोडिंग योजना को भी नहीं समझता है।
अक्षरों को सांकेतिक अक्षरों में बदलना
सभी वर्ण एन्कोडिंग प्रत्येक वर्ण के लिए एक नंबर असाइन किया जाता है जिसका उपयोग किया जा सकता है। आप अभी एक चरित्र एन्कोडिंग बना सकते हैं।
उदाहरण के लिए, मैं कह सकता हूं कि पत्र ए संख्या 13, a = 14, 1 = 33, # = 123, और इसी तरह बन जाती है।
यह वह जगह है जहाँ उद्योग-व्यापी मानक आते हैं। यदि संपूर्ण कंप्यूटर उद्योग समान वर्ण एन्कोडिंग योजना का उपयोग करता है, तो प्रत्येक कंप्यूटर समान वर्ण प्रदर्शित कर सकता है।
यूनिकोड क्या है?
ASCII (सूचना मानक के लिए अमेरिकी मानक कोड) पहली व्यापक एन्कोडिंग योजना बन गई। हालांकि, यह केवल 128 चरित्र परिभाषाओं तक सीमित है। यह सबसे आम अंग्रेजी वर्ण, संख्या और विराम चिह्न के लिए ठीक है, लेकिन दुनिया के बाकी हिस्सों के लिए थोड़ा सीमित है।
स्वाभाविक रूप से, बाकी दुनिया अपने पात्रों के लिए भी एक ही एन्कोडिंग योजना चाहती है। हालाँकि, थोड़े समय के लिए, जहाँ आप थे, उसके आधार पर, समान ASCII कोड के लिए एक अलग वर्ण प्रदर्शित हो सकता है।
अंत में, दुनिया के अन्य हिस्सों ने अपनी खुद की एन्कोडिंग योजनाएं बनाना शुरू कर दिया, और चीजें थोड़ी भ्रमित होने लगीं। न केवल विभिन्न लंबाई की कोडिंग योजनाएं थीं, कार्यक्रमों को यह पता लगाने की आवश्यकता थी कि कौन सी एन्कोडिंग योजना उन्हें उपयोग करने वाली थी।
यह स्पष्ट हो गया कि एक नई चरित्र एन्कोडिंग योजना की आवश्यकता थी, जो कि यूनिकोड मानक बनाया गया था। यूनिकोड का उद्देश्य सभी विभिन्न एन्कोडिंग योजनाओं को एकजुट करना है ताकि कंप्यूटर के बीच भ्रम को यथासंभव सीमित किया जा सके।
इन दिनों, यूनिकोड मानक 128,000 से अधिक वर्णों के मानों को परिभाषित करता है और इसे देखा जा सकता है यूनिकोड कंसोर्टियम. इसके कई चरित्र एन्कोडिंग रूप हैं:
- UTF-8: अंग्रेजी अक्षरों को एनकोड करने के लिए केवल एक बाइट (8 बिट) का उपयोग करता है। यह अन्य वर्णों को एनकोड करने के लिए बाइट्स के अनुक्रम का उपयोग कर सकता है। UTF-8 का व्यापक रूप से ईमेल सिस्टम और इंटरनेट पर उपयोग किया जाता है।
- UTF-16: सबसे अधिक इस्तेमाल किए जाने वाले वर्णों को एनकोड करने के लिए दो बाइट्स (16 बिट्स) का उपयोग करता है। यदि आवश्यक हो, तो अतिरिक्त वर्णों को 16-बिट संख्याओं की एक जोड़ी द्वारा दर्शाया जा सकता है।
- UTF-32: वर्णों को एन्कोड करने के लिए चार बाइट्स (32 बिट्स) का उपयोग करता है। यह स्पष्ट हो गया कि जैसे ही यूनिकोड मानक बढ़ा, सभी वर्णों का प्रतिनिधित्व करने के लिए 16-बिट संख्या बहुत कम है। यूटीएफ -32 एक नंबर के रूप में हर यूनिकोड चरित्र का प्रतिनिधित्व करने में सक्षम है।
ध्यान दें: यूटीएफ का अर्थ है यूनिकोड परिवर्तन इकाई।
कोड अंक
एक कोड बिंदु वह मूल्य है जो एक चरित्र यूनिकोड मानक में दिया गया है। यूनिकोड के अनुसार मान हेक्साडेसिमल संख्याओं के रूप में लिखे गए हैं और इनमें एक उपसर्ग है U +.
उदाहरण के लिए, जिन पात्रों को हमने पहले देखा था, उन्हें एनकोड करने के लिए:
- ए U + 0041 है
- ए U + 0061 है
- 1 U + 0031 है
- # यू + 0023 है
इन कोड बिंदुओं को 17 अलग-अलग वर्गों में विभाजित किया जाता है जिन्हें प्लेन कहा जाता है, जिन्हें संख्या 0 से 16 के माध्यम से पहचाना जाता है। प्रत्येक विमान में 65,536 कोड पॉइंट हैं। पहला विमान, 0, सबसे अधिक इस्तेमाल किया जाने वाला वर्ण रखता है और इसे बेसिक मल्टीलिंगुअल प्लेन (बीएमपी) के रूप में जाना जाता है।
कोड इकाइयाँ
एन्कोडिंग योजनाएं कोड इकाइयों से बनती हैं, जिनका उपयोग एक सूचकांक प्रदान करने के लिए किया जाता है जहां एक चरित्र को एक विमान पर तैनात किया जाता है।
उदाहरण के तौर पर UTF-16 पर विचार करें। प्रत्येक 16-बिट संख्या एक कोड इकाई है। कोड इकाइयों को कोड बिंदुओं में परिवर्तित किया जा सकता है। उदाहरण के लिए, फ्लैट नोट प्रतीक ♭ में U + 1D160 का एक कोड बिंदु होता है और यह यूनिकोड मानक (पूरक आइडियोग्राफिक प्लेन) के दूसरे विमान पर रहता है। यह 16-बिट कोड इकाइयों U + D834 और U + DD60 के संयोजन का उपयोग करके एन्कोड किया जाएगा।
बीएमपी के लिए, कोड बिंदुओं और कोड इकाइयों के मूल्य समान हैं। यह UTF-16 के लिए एक शॉर्टकट देता है जो बहुत सारे संग्रहण स्थान बचाता है। यह केवल उन पात्रों का प्रतिनिधित्व करने के लिए एक 16-बिट संख्या का उपयोग करने की आवश्यकता है।
जावा यूनिकोड का उपयोग कैसे करता है?
जावा उस समय के आसपास बनाया गया था जब यूनिकोड मानक में बहुत छोटे अक्षरों के लिए निर्धारित मान थे। इसके बाद, यह महसूस किया गया कि 16-बिट्स उन सभी पात्रों को एनकोड करने के लिए पर्याप्त से अधिक होंगे जिनकी कभी आवश्यकता होगी। इसे ध्यान में रखते हुए, Java को UTF-16 का उपयोग करने के लिए डिज़ाइन किया गया था। चार्ट डेटा प्रकार का उपयोग मूल रूप से 16-बिट यूनिकोड कोड बिंदु का प्रतिनिधित्व करने के लिए किया गया था।
जावा एसई v5.0 के बाद से, चार्ट एक कोड इकाई का प्रतिनिधित्व करता है। यह उन वर्णों का प्रतिनिधित्व करने के लिए बहुत कम अंतर रखता है जो मूल बहुभाषी विमान में हैं क्योंकि कोड इकाई का मूल्य कोड बिंदु के समान है। हालांकि, इसका मतलब यह है कि अन्य विमानों पर पात्रों के लिए, दो वर्णों की आवश्यकता होती है।
याद रखने वाली महत्वपूर्ण बात यह है कि एक एकल चार डेटा प्रकार अब सभी यूनिकोड वर्णों का प्रतिनिधित्व नहीं कर सकता है।