अक्षर कूटन

वर्ण संकेतन आलेखी वर्णों, विशेष रूप से मानव भाषा के लिखित वर्णों को अंक निर्दिष्ट करने की प्रक्रिया है, जिससे उन्हें डिजिटल संगणकों का उपयोग करके संग्रहीत, प्रसारित और रूपांतरित करने की अनुमति मिलती है। वर्ण संकेतन बनाने वाले संख्यात्मक मान "कोड बिंदु" कहलाते हैं और सामूहिक रूप से "कोड दिक्", "कोड पृष्ठ" या "वर्ण प्रतिचित्र" सम्मिलित होते हैं।

प्रकाशिक या विद्युत टेलीग्राफ से जुड़े प्रारंभिक वर्ण कोड केवल लिखित भाषाओं में उपयोग किए जाने वाले वर्णों के एक उपसमुच्चय का प्रतिनिधित्व कर सकते हैं, कभी-कभी बड़े वर्णों, अंकों और कुछ विराम चिह्नों तक ही सीमित होते हैं। आधुनिक संगणक प्रणालियों में डेटा के डिजिटल प्रतिनिधित्व की कम लागत अधिक विस्तृत वर्ण कोड (जैसे यूनिकोड) की अनुमति देती है जो कई लिखित भाषाओं में उपयोग किए जाने वाले अधिकांश वर्णों का प्रतिनिधित्व करते हैं। अंतरराष्ट्रीय स्तर पर स्वीकृत मानकों का उपयोग करते हुए वर्ण संकेतन वैद्युतिक रूप में अवतरण के विश्व व्यापक विनिमय की अनुमति देता है।

इतिहास
वर्ण कोड का इतिहास मशीन-मध्यस्थ वर्ण-आधारित प्रतीकात्मक जानकारी के लिए एक बार-उपन्यास विद्युत साधनों का उपयोग करते हुए, एक दूरी पर विकसित होने की आवश्यकता को दर्शाता है। शुरुआती कोड हस्तचालित और हाथ से लिखे गए संकेतन और बीजलेखन प्रणाली पर आधारित है, जैसे बेकन के संकेताक्षर, ब्रेल, अंतर्राष्ट्रीय समुद्री सिग्नल फ्लैग, और चीनी टेलीग्राफ कोड के लिए चीनी वर्णों के 4-अंकीय संकेतन (हंस श्जेलरअप, 1869)। विद्युत और इलेक्ट्रो-मैकेनिकल तकनीकों को अपनाने के साथ इन शुरुआती कोडों को नई क्षमताओं और शुरुआती मशीनों की सीमाओं के अनुकूल बनाया गया। 1840 के दशक में पेश किया गया सबसे पुराना विद्युत-संचरित वर्ण कोड, मोर्स कोड, चर लंबाई के कोड उत्पन्न करने के लिए चार "प्रतीकों" (लघु संकेत, लंबा संकेत, छोटी जगह, लंबी जगह) की एक प्रणाली का उपयोग करता था। हालांकि मोर्स कोड का कुछ व्यावसायिक उपयोग मशीनरी के माध्यम से किया गया था, इसे अक्सर एक हस्तचालित कोड के रूप में इस्तेमाल किया जाता था, जो टेलीग्राफ कुंजी पर हाथ से उत्पन्न होता था और कान से समझने योग्य होता था, और शौकिया रेडियो और वैमानिकी उपयोग में बना रहता है। अधिकांश कोड निश्चित प्रति-वर्ण लंबाई या निश्चित-लंबाई कोड (उदा. यूनिकोड) के चर-लंबाई अनुक्रम के होते हैं।

वर्ण संकेतन प्रणाली के सामान्य उदाहरणों में मोर्स कोड, बॉडॉट कोड, अमेरिकन स्टैंडर्ड कोड फॉर इन्फॉर्मेशन विनिमय (ASCII) और यूनिकोड सम्मिलित हैं। यूनिकोड, एक अच्छी तरह से परिभाषित और एक्स्टेंसिबल संकेतन प्रणाली है, जिसने सबसे पहले के वर्ण संकेतन को प्रतिस्थापित किया है, लेकिन वर्तमान में कोड विकास का मार्ग काफी प्रसिद्ध है।

बॉडॉट कोड, एक पांच-बिट संकेतन, 1870 में एमिल बॉडॉट द्वारा बनाया गया था, 1874 में पेटेंट कराया गया था, 1901 में डोनाल्ड मरे द्वारा संशोधित किया गया था, और 1930 में CCITT द्वारा अंतर्राष्ट्रीय टेलीग्राफ वर्णमाला संख्या 2 (ITA2) के रूप में मानकीकृत किया गया था। "बॉडॉट" नाम को गलती से ITA2 और इसके कई रूपों में लागू किया गया है। ITA2 को कई कमियों का सामना करना पड़ा और कई उपकरण निर्माताओं द्वारा अक्सर "सुधार" किया गया था, कभी-कभी संगतता समस्याएं पैदा कर रहा था। 1959 में यू.एस. सेना ने अपने फील्डटा कोड को परिभाषित किया, एक छह या सात-बिट कोड, जिसे यू.एस. आर्मी सिग्नल कोर द्वारा पेश किया गया था। जबकि फील्डटा ने तत्कालीन आधुनिक मुद्दों (जैसे मशीन कोलेशन के लिए व्यवस्थित वर्ण और अंक कोड) को संबोधित किया, फील्डटा अपने लक्ष्यों से कम हो गया और अल्पकालिक था। 1963 में ASCII समिति (जिसमें फील्डटा समिति के कम से कम एक सदस्य, डब्लू. एफ. ल्यूबर्टा सम्मिलित थे) द्वारा पहला ASCII (सूचना विनिमय के लिए अमेरिकी मानक कोड) कोड (X3.4-1963) जारी किया गया था, जिसने एक सरल कोड का उपयोग करते हुए, फील्डटा की अधिकांश कमियों को संबोधित किया। कई परिवर्तन सूक्ष्म थे, जैसे कि कुछ निश्चित संख्यात्मक श्रेणियों के भीतर कोलैटेबल वर्ण सेट। ASCII63 एक सफलता थी, जिसे व्यापक रूप से उद्योग द्वारा अपनाया गया था, और 1967 के ASCII कोड के अनुवर्ती मुद्दे के साथ (जिसमें लोअर-केस वर्ण जोड़े गए और कुछ "नियंत्रण कोड" मुद्दों को ठीक किया गया) ASCII67 को काफी व्यापक रूप से अपनाया गया था। ASCII67 की अमेरिकी-केंद्रित प्रकृति को यूरोपीय ईसीएमए-6 मानक में कुछ हद तक संबोधित किया गया था।

हरमन होलेरिथ ने 19वीं सदी के अंत में जनगणना के आंकड़ों का विश्लेषण करने के लिए पंच कार्ड डेटा संकेतन का आविष्कार किया था। प्रारंभ में, प्रत्येक छेद की स्थिति एक अलग डेटा तत्व का प्रतिनिधित्व करती थी, लेकिन बाद में, संख्यात्मक जानकारी को निचली पंक्तियों को 0 से 9 तक क्रमांकित करके एन्कोड किया गया था, जिसमें एक कॉलम में एक पंच होता था जो इसकी पंक्ति संख्या का प्रतिनिधित्व करता था। बाद में वर्णानुक्रमिक डेटा को प्रति स्तंभ एक से अधिक पंच की अनुमति देकर एन्कोड किया गया था। इलेक्ट्रोमैकेनिकल टेबुलेटिंग मशीन मशीन के माध्यम से कार्ड की गति के सापेक्ष दालों के समय के अनुसार आंतरिक रूप से तिथि का प्रतिनिधित्व करती है। जब आईबीएम वैद्युतिक प्रसंस्करण में गया, आईबीएम 603 वैद्युतिक मल्टीप्लायर से शुरू हुआ, तो उसने विभिन्न प्रकार की बाइनरी संकेतन योजनाओं का उपयोग किया जो पंच कार्ड कोड से जुड़ी थीं।

आईबीएम की बाइनरी कोडेड डेसीमल (बीसीडी) एक छह-बिट संकेतन योजना थी जिसका उपयोग आईबीएम द्वारा अपने 702 और 704 संगणकों में, और इसके बाद के 7000 श्रृंखला और 1400 श्रृंखलाओं में, साथ ही साथ संबद्ध बाह्य उपकरणों में भी किया गया था। चूंकि पंच किए गए कार्ड कोड के उपयोग में केवल अनुमत अंक, अपर-केस अंग्रेजी वर्ण और कुछ विशेष वर्ण, छह बिट पर्याप्त थे। बीसीडी ने वर्णमाला और विशेष वर्णों को सम्मिलित करने के लिए मौजूदा सरल चार-बिट संख्यात्मक संकेतन को बढ़ाया, इसे आसानी से पंच-कार्ड संकेतन में मैप किया जो पहले से ही व्यापक उपयोग में था। आईबीएम के कोड मुख्य रूप से आईबीएम उपकरण के साथ उपयोग किए गए थे; उस युग के अन्य संगणक विक्रेताओं के पास अपने स्वयं के वर्ण कोड थे, अक्सर छह-बिट, लेकिन आमतौर पर आईबीएम उपकरण पर निर्मित टेप को पढ़ने की क्षमता थी। बीसीडी आईबीएम के विस्तारित बाइनरी कोडेड दशमलव विनिमय कोड (आमतौर पर ईबीसीडीआईसी के रूप में संक्षिप्त) का अग्रदूत था, आईबीएम प्रणाली / 360 के लिए 1963 में विकसित एक आठ-बिट संकेतन योजना जिसमें एक बड़ा वर्ण सेट सम्मिलित था, जिसमें लोअर केस लेटर्स भी सम्मिलित थे।

ऐसे सेटों की सीमाएं जल्द ही स्पष्ट हो गईं, [ ?] और उन्हें बढ़ाने के लिए कई तदर्थ तरीके विकसित किए गए। पूर्वी एशियाई लिपियों के सीजेके परिवार सहित विभिन्न भाषाओं के लिए और अधिक लेखन प्रणालियों का समर्थन करने की आवश्यकता, पात्रों की एक बड़ी संख्या के लिए समर्थन की आवश्यकता है और पिछले तदर्थ दृष्टिकोण के बजाय वर्ण संकेतन के लिए एक व्यवस्थित दृष्टिकोण की मांग की।

र्वभौमिक रूप से विनिमेय वर्ण संकेतन विकसित करने की कोशिश में, 1980 के दशक में शोधकर्ताओं को इस दुविधा का सामना करना पड़ा कि, एक ओर, अतिरिक्त वर्णों को समायोजित करने के लिए अधिक बिट्स जोड़ना आवश्यक था, लेकिन दूसरी ओर, अपेक्षाकृत छोटे वर्ण सेट के उपयोगकर्ताओं के लिए। लैटिन वर्णमाला (जो अभी भी अधिकांश संगणक उपयोगकर्ताओं का गठन करते हैं), वे अतिरिक्त बिट्स उस समय के दुर्लभ और महंगे कंप्यूटिंग संसाधनों का एक बड़ा अपशिष्ट थे (क्योंकि वे हमेशा ऐसे उपयोगकर्ताओं के लिए शून्य होंगे)। 1985 में, औसत व्यक्तिगत संगणक उपयोगकर्ता की हार्ड डिस्क ड्राइव केवल 10 मेगाबाइट स्टोर कर सकती थी, और थोक बाजार में इसकी कीमत लगभग 250 अमेरिकी डॉलर थी (और खुदरा क्षेत्र में अलग से खरीदे जाने पर बहुत अधिक), इसलिए यह उस समय बहुत महत्वपूर्ण था। हर बिट को गिनने के लिए।

समझौता समाधान जो अंततः पाया गया और यूनिकोड में विकसित किया गया था, इस धारणा को तोड़ना था (टेलीग्राफ कोड पर वापस डेटिंग) कि प्रत्येक वर्ण को हमेशा बिट्स के एक विशेष अनुक्रम से सीधे मेल खाना चाहिए। इसके बजाय, वर्णों को पहले अमूर्त संख्याओं के रूप में एक सार्वभौमिक मध्यवर्ती प्रतिनिधित्व के लिए मैप किया जाएगा, जिसे कोड पॉइंट कहा जाता है। कोड बिंदुओं को तब विभिन्न तरीकों से और संदर्भ के आधार पर प्रति वर्ण (कोड इकाइयों) की विभिन्न डिफ़ॉल्ट संख्याओं के साथ प्रदर्शित किया जाएगा। कोड इकाई की लंबाई से अधिक कोड बिंदुओं को एन्कोड करने के लिए, जैसे आठ-बिट इकाइयों के लिए 256 से ऊपर, समाधान चर-चौड़ाई संकेतन को लागू करना था जहां एक एस्केप अनुक्रम संकेत देगा कि बाद के बिट्स को उच्च कोड बिंदु के रूप में पार्स किया जाना चाहिए।

शब्दावली

 * वर्ण संकेतन से संबंधित शब्दावली
 * एक वर्ण पाठ की एक न्यूनतम इकाई है जिसका अर्थ मूल्य है।
 * एक वर्ण सेट वर्णों का एक संग्रह है जो कई भाषाओं द्वारा उपयोग किया जा सकता है। उदाहरण: लैटिन कैरेक्टर सेट का उपयोग अंग्रेजी और अधिकांश यूरोपीय भाषाओं द्वारा किया जाता है, हालांकि ग्रीक कैरेक्टर सेट केवल ग्रीक भाषा द्वारा उपयोग किया जाता है।
 * एक कोडित वर्ण सेट एक वर्ण सेट होता है जिसमें प्रत्येक वर्ण एक अद्वितीय संख्या से मेल खाता है।
 * एक कोडित वर्ण सेट का एक कोड बिंदु वर्ण सेट या कोड स्थान में कोई अनुमत मान है।
 * एक कोड स्थान पूर्णांकों की एक श्रेणी है जिसका मान कोड बिंदु होते हैं।
 * एक कोड इकाई वर्ण संकेतन योजना का "शब्द आकार" है, जैसे 7-बिट, 8-बिट, 16-बिट। कुछ योजनाओं में, कुछ वर्णों को एकाधिक कोड इकाइयों का उपयोग करके एन्कोड किया जाता है, जिसके परिणामस्वरूप चर-लंबाई संकेतन होती है। कुछ दस्तावेज़ों में एक कोड इकाई को एक कोड मान के रूप में संदर्भित किया जाता है।
 * वर्ण प्रदर्शनों की सूची (पात्रों का सार सेट)

वर्ण प्रदर्शनों की सूची लैटिन, सिरिलिक, चीनी, कोरियाई, जापानी, हिब्रू और अरामी सहित विभिन्न लिपियों में पाए जाने वाले दस लाख से अधिक वर्णों का एक सार सेट है।

अन्य प्रतीकों जैसे कि संगीत संकेतन भी वर्ण प्रदर्शनों की सूची में सम्मिलित हैं। यूनिकोड और जीबी 18030 दोनों मानकों में एक वर्ण प्रदर्शन है। जैसा कि एक मानक में नए वर्ण जोड़े जाते हैं, अन्य मानक भी समानता बनाए रखने के लिए उन वर्णों को जोड़ता है।

कोड इकाई आकार विशेष संकेतन के लिए बिट माप के बराबर है:
 * US-ASCII में एक कोड इकाई में 7 बिट होते हैं;
 * UTF-8, EBCDIC और GB 18030 में एक कोड इकाई में 8 बिट होते हैं;
 * UTF-16 में एक कोड इकाई में 16 बिट होते हैं;
 * UTF-32 में एक कोड इकाई में 32 बिट होते हैं।

"ab̲c𐐀" वर्णों की एक स्ट्रिंग पर विचार करें, यानी एक स्ट्रिंग जिसमें यूनिकोड संयोजन वर्ण और साथ ही एक पूरक वर्ण  है। इस स्ट्रिंग में कई अभ्यावेदन हैं जो तार्किक रूप से समतुल्य हैं, फिर भी जबकि प्रत्येक परिस्थितियों के विविध सेट या आवश्यकताओं की श्रेणी के अनुकूल है: विशेष रूप से अंतिम वर्ण पर ध्यान दें, जिसे या तो 1 32-बिट मान, 2 16-बिट मानों के साथ दर्शाया गया है। या 4 8-बिट मान। हालांकि उन रूपों में से प्रत्येक ग्लिफ़ का प्रतिनिधित्व करने के लिए बिट्स (32) की समान संख्या का उपयोग करता है, वास्तविक संख्यात्मक बाइट मान और उनकी व्यवस्था पूरी तरह से असंबंधित दिखाई देती है।
 * एक कोड इकाई का उदाहरण
 * चार वर्ण_ (कंप्यूटिंग):
 * a, b̲, c, 𐐀
 * पांच अंगूर:
 * a, b, _, c, 𐐀
 * पांच यूनिकोड कोड बिंदु:
 * U+0061, U+0062, U+0332, U+0063, U+10400
 * पांच UTF-32 कोड इकाइयाँ (32-बिट पूर्णांक मान):
 * 0x00000061, 0x00000062, 0x00000332, 0x00000063, 0x00010400
 * छह UTF-16 कोड इकाइयाँ (16-बिट पूर्णांक)
 * 0x0061, 0x0062, 0x0332, 0x0063, 0xd801, 0xdc00
 * नौ यूटीएफ -8 कोड इकाइयां (8-बिट मान, या बाइट)
 * 0x61, 0x62, 0xCC, 0xB2, 0x63, 0xf0, 0x90, 0x90, 0x80

यूनिकोड में किसी वर्ण को संदर्भित करने की परंपरा 'U+' से शुरू होती है और उसके बाद हेक्साडेसिमल में कोडपॉइंट मान होता है। यूनिकोड मानक के लिए मान्य कोड बिंदुओं की सीमा U+0000 से U+10FFFF है, समावेशी, 17 विमानों में विभाजित, 0 से 16 की संख्या से पहचाना जाता है। U+0000 से U+FFFF तक के वर्ण विमान 0 में हैं, बेसिक मल्टीलिंगुअल प्लेन (BMP) कहा जाता है। इस विमान में सबसे अधिक इस्तेमाल किए जाने वाले पात्र हैं। अन्य तलों में U+10000 से U+10FFFF की श्रेणी के वर्ण पूरक वर्ण कहलाते हैं।
 * कोड बिंदु:

निम्न तालिका कोड बिंदु मानों के उदाहरण दिखाती है: एक कोड बिंदु कोड इकाइयों के अनुक्रम द्वारा दर्शाया गया है। मानचित्रण संकेतन द्वारा परिभाषित किया गया है। इस प्रकार, एक कोड बिंदु को दर्शाने के लिए आवश्यक कोड इकाइयों की संख्या संकेतन पर निर्भर करती है:
 * यूटीएफ -8: कोड एक, दो, तीन या चार कोड इकाइयों के अनुक्रम के लिए मानचित्र को इंगित करता है।
 * UTF-16: कोड इकाइयाँ 8-बिट कोड इकाइयों की तुलना में दोगुनी लंबी हैं। इसलिए, U+10000 से कम स्केलर मान वाले किसी भी कोड बिंदु को एक एकल कोड इकाई के साथ एन्कोड किया जाता है। U+10000 या उससे अधिक मान वाले कोड बिंदुओं के लिए प्रत्येक में दो कोड इकाइयों की आवश्यकता होती है। कोड इकाइयों के इन जोड़े का UTF-16 में एक अनूठा शब्द है: "यूनिकोड सरोगेट जोड़े"।
 * UTF-32: 32-बिट कोड इकाई इतनी बड़ी होती है कि प्रत्येक कोड बिंदु को एक एकल कोड इकाई के रूप में दर्शाया जाता है।
 * जीबी 18030: छोटी कोड इकाइयों के कारण प्रति कोड बिंदु पर कई कोड इकाइयाँ सामान्य हैं। कोड बिंदुओं को एक, दो, या चार कोड इकाइयों में मैप किया जाता है।

यूनिकोड संकेतन मॉडल
यूनिकोड और इसके समानांतर मानक, आईएसओ/आईईसी 10646 यूनिवर्सल कैरेक्टर सेट, एक साथ मिलकर एक आधुनिक, एकीकृत वर्ण संकेतन बनाते हैं। वर्णों को सीधे ऑक्टेट (बाइट्स) में मैप करने के बजाय, वे अलग-अलग परिभाषित करते हैं कि कौन से वर्ण उपलब्ध हैं, संबंधित प्राकृतिक संख्याएँ (कोड बिंदु), उन संख्याओं को निश्चित आकार की प्राकृतिक संख्याओं (कोड इकाइयों) की एक श्रृंखला के रूप में कैसे एन्कोड किया जाता है, और अंत में कैसे वे इकाइयाँ ऑक्टेट की एक धारा के रूप में एन्कोडेड हैं। इस अपघटन का उद्देश्य वर्णों का एक सार्वभौमिक सेट स्थापित करना है जिसे विभिन्न तरीकों से कूटबद्ध किया जा सकता है। इस मॉडल का सही ढंग से वर्णन करने के लिए "वर्ण सेट" और "वर्ण संकेतन" की तुलना में अधिक सटीक शब्दों की आवश्यकता होती है। आधुनिक मॉडल में इस्तेमाल की जाने वाली शर्तें इस प्रकार हैं:

एक वर्ण प्रदर्शनों की सूची सार तत्वों का पूरा सेट है जो एक प्रणाली समर्थन करता है। प्रदर्शनों की सूची को बंद किया जा सकता है, यानी एक नया मानक बनाए बिना किसी भी परिवर्धन की अनुमति नहीं है (जैसा कि ASCII और अधिकांश ISO-8859 श्रृंखला के मामले में है), या यह खुला हो सकता है, परिवर्धन की अनुमति देता है (जैसा कि यूनिकोड और कुछ हद तक विंडोज कोड पेजों के मामले में है)। किसी दिए गए प्रदर्शनों की सूची के पात्र उन निर्णयों को दर्शाते हैं जो लेखन प्रणालियों को बुनियादी सूचना इकाइयों में विभाजित करने के बारे में किए गए हैं। लैटिन, ग्रीक और सिरिलिक वर्णमाला के मूल रूपों को वर्णों, अंकों, विराम चिह्नों और कुछ विशेष वर्णों जैसे कि स्थान में तोड़ा जा सकता है, जो सभी को सरल रेखीय अनुक्रमों में व्यवस्थित किया जा सकता है जो उसी क्रम में प्रदर्शित होते हैं जिस क्रम में वे पढ़े जाते हैं। लेकिन इन वर्णों के साथ भी, विशेषक चिह्न एक जटिलता पैदा करते हैं: उन्हें या तो एक वर्ण के भाग के रूप में माना जा सकता है जिसमें एक वर्ण और विशेषक (एक पूर्वनिर्मित वर्ण के रूप में जाना जाता है), या अलग-अलग वर्ण होते हैं। पूर्व एक बहुत सरल पाठ प्रबंधन प्रणाली की अनुमति देता है लेकिन बाद वाला पाठ में किसी भी वर्ण / विशेषक संयोजन का उपयोग करने की अनुमति देता है। संयुक्ताक्षर इसी तरह की समस्याएं पैदा करते हैं। अन्य लेखन प्रणाली, जैसे कि अरबी और हिब्रू, को अधिक जटिल वर्ण प्रदर्शनों के साथ दर्शाया जाता है, क्योंकि द्विदिश पाठ और ग्लिफ़ जैसी चीजों को समायोजित करने की आवश्यकता होती है जो अलग-अलग स्थितियों के लिए अलग-अलग तरीकों से एक साथ जुड़ते हैं।

एक कोडित वर्ण सेट (सीसीएस) एक ऐसा फ़ंक्शन है जो वर्णों को कोड बिंदुओं पर मानचित्रित करता है (प्रत्येक कोड बिंदु एक वर्ण का प्रतिनिधित्व करता है)। उदाहरण के लिए, किसी दिए गए प्रदर्शनों की सूची में, लैटिन वर्णमाला में बड़े वर्ण "ए" को कोड बिंदु 65, वर्ण "बी" से 66, आदि द्वारा दर्शाया जा सकता है। एकाधिक कोडित वर्ण सेट एक ही प्रदर्शनों की सूची साझा कर सकते हैं; उदाहरण के लिए आईएसओ/आईईसी 8859-1 और आईबीएम कोड पृष्ठ 037 और 500 सभी एक ही प्रदर्शनों की सूची को कवर करते हैं लेकिन उन्हें विभिन्न कोड बिंदुओं पर मैप करते हैं।

एक वर्ण संकेतन फॉर्म (सीईएफ) एक प्रणाली में भंडारण की सुविधा के लिए कोड इकाइयों को कोड बिंदुओं की मैपिंग है जो निश्चित लंबाई के बिट अनुक्रमों के रूप में संख्याओं का प्रतिनिधित्व करता है (यानी व्यावहारिक रूप से कोई भी संगणक प्रणाली)। उदाहरण के लिए, एक प्रणाली जो 16-बिट इकाइयों में संख्यात्मक जानकारी संग्रहीत करती है, प्रत्येक इकाई में केवल 0 से 65,535 कोड बिंदुओं का सीधे प्रतिनिधित्व कर सकती है, लेकिन बड़े कोड बिंदु (जैसे, 65,536 से 1.4 मिलियन) को कई 16-बिट इकाइयों का उपयोग करके दर्शाया जा सकता है। यह पत्राचार CEF द्वारा परिभाषित किया गया है।

इसके बाद, एक वर्ण संकेतन योजना (सीईएस) एक ऑक्टेट-आधारित फ़ाइल प्रणाली पर भंडारण की सुविधा के लिए या एक ऑक्टेट-आधारित नेटवर्क पर संचरण की सुविधा के लिए ऑक्टेट के अनुक्रम के लिए कोड इकाइयों की मैपिंग है। सरल वर्ण संकेतन योजनाओं में सम्मिलित हैं UTF-8, UTF-16BE, UTF-32BE, UTF-16LE या UTF-32LE; यूटीएफ-16, यूटीएफ-32 और आईएसओ/आईईसी 2022 जैसी मिश्रित वर्ण संकेतन योजनाएं, बाइट ऑर्डर चिह्न या एस्केप अनुक्रमों का उपयोग करके कई सरल योजनाओं के बीच स्विच करती हैं; कंप्रेसिंग स्कीम प्रति कोड यूनिट (जैसे SCSU, BOCU, और Punycode) में उपयोग किए जाने वाले बाइट्स की संख्या को कम करने की कोशिश करती है।

हालांकि UTF-32BE एक सरल CES है, यूनिकोड के साथ काम करने वाले अधिकांश प्रणाली या तो UTF-8 का उपयोग करते हैं, जो निश्चित-चौड़ाई ASCII के साथ पिछड़ा संगत है और यूनिकोड कोड को ऑक्टेट के चर-चौड़ाई अनुक्रमों या UTF-16BE को मैप करता है, जो कि पिछड़ा हुआ है निश्चित-चौड़ाई वाले UCS-2BE के साथ संगत और 16-बिट शब्दों के चर-चौड़ाई वाले अनुक्रमों के लिए यूनिकोड कोड बिंदुओं को मानचित्रित करता है। एक विस्तृत चर्चा के लिए यूनिकोड संकेतन की तुलना देखें।

अंत में, एक उच्च-स्तरीय प्रोटोकॉल हो सकता है जो यूनिकोड वर्ण के विशेष संस्करण का चयन करने के लिए अतिरिक्त जानकारी प्रदान करता है, विशेष रूप से जहां क्षेत्रीय रूपांतर होते हैं जिन्हें यूनिकोड में समान वर्ण के रूप में 'एकीकृत' किया गया है। एक्सएमएल विशेषता एक्सएमएल: लैंग एक उदाहरण है।

यूनिकोड मॉडल ऐतिहासिक प्रणालियों के लिए वर्ण मानचित्र शब्द का उपयोग करता है, जो सभी CCS, CEF और CES परतों को कवर करते हुए, बाइट्स के अनुक्रम के लिए सीधे वर्णों का एक क्रम निर्दिष्ट करता है।

कैरेक्टर सेट, कैरेक्टर मैप्स और कोड पेज
ऐतिहासिक रूप से, शब्द वर्ण संकेतन, वर्ण मानचित्र, वर्ण सेट और कोड पृष्ठ संगणक विज्ञान में पर्यायवाची थे, क्योंकि एक ही मानक वर्णों के प्रदर्शनों की सूची को निर्दिष्ट करेगा और उन्हें कोड इकाइयों की एक धारा में कैसे एन्कोड किया जाना था - आमतौर पर एक वर्ण के साथ प्रति कोड इकाई। लेकिन अब शब्दों से संबंधित लेकिन अलग-अलग अर्थ हैं, कई अलग-अलग संकेतन प्रणाली के बारे में लिखते और एकीकृत करते समय मानक निकायों द्वारा सटीक शब्दावली का उपयोग करने के प्रयासों के कारण। भले ही, शब्द अभी भी एक दूसरे के स्थान पर उपयोग किए जाते हैं, वर्ण सेट लगभग सर्वव्यापी होने के साथ।

एक "कोड पेज" का अर्थ आमतौर पर बाइट-ओरिएंटेड संकेतन होता है, लेकिन संकेतन के कुछ सूट (अलग-अलग स्क्रिप्ट को कवर करने) के संबंध में, जहां कई वर्ण उन सभी कोड पृष्ठों में समान कोड साझा करते हैं। जाने-माने कोड पेज सुइट्स "विंडोज" (विंडोज-1252 पर आधारित) और "आईबीएम"/"डॉस" (कोड पेज 437 पर आधारित) हैं, विवरण के लिए विंडोज कोड पेज देखें। अधिकांश, लेकिन सभी नहीं, कोड पृष्ठों के रूप में संदर्भित संकेतन एकल-बाइट संकेतन हैं (लेकिन बाइट आकार पर ऑक्टेट देखें।)

आईबीएम का कैरेक्टर डेटा रिप्रेजेंटेशन आर्किटेक्चर (सीडीआरए) कोडित कैरेक्टर सेट आइडेंटिफायर (सीसीएसआईडी) के साथ संस्थाओं को नामित करता है, जिनमें से प्रत्येक को "चारसेट", "कैरेक्टर सेट", "कोड पेज" या "चारमैप" कहा जाता है।

शब्द "कोड पेज" यूनिक्स या लिनक्स में नहीं होता है, जहां "चार्मैप" को प्राथमिकता दी जाती है, आमतौर पर लोकेल के बड़े संदर्भ में।

"कोडेड कैरेक्टर सेट" के विपरीत, एक "वर्ण संकेतन" अमूर्त वर्णों से लेकर कोड शब्दों तक का एक नक्शा है। HTTP (और MIME) की भाषा में एक "कैरेक्टर सेट" वर्ण संकेतन के समान होता है (लेकिन CCS के समान नहीं)।

"विरासत संकेतन" एक शब्द है जिसका इस्तेमाल कभी-कभी पुराने वर्ण संकेतन को चिह्नित करने के लिए किया जाता है, लेकिन अर्थ की अस्पष्टता के साथ। इसका अधिकांश उपयोग यूनिकोडीकरण के संदर्भ में है, जहां यह संकेतन को संदर्भित करता है जो सभी यूनिकोड कोड बिंदुओं को कवर करने में विफल रहता है, या, अधिक सामान्यतः, कुछ भिन्न वर्ण प्रदर्शनों का उपयोग करते हुए: एक यूनिकोड वर्ण, या इसके विपरीत का प्रतिनिधित्व करने वाले कई कोड बिंदु (उदाहरण के लिए कोड पृष्ठ 437 देखें)। कुछ स्रोत संकेतन को विरासत के रूप में केवल इसलिए संदर्भित करते हैं क्योंकि यह यूनिकोड से पहले था। सभी विंडोज कोड पेजों को आमतौर पर विरासत के रूप में संदर्भित किया जाता है, क्योंकि वे यूनिकोड से पहले और क्योंकि वे सभी 221 संभावित यूनिकोड कोड बिंदुओं का प्रतिनिधित्व करने में असमर्थ हैं।

वर्ण संकेतन अनुवाद
उपयोग में कई वर्ण संकेतन विधियों (और संग्रहीत डेटा के साथ पिछड़े संगतता की आवश्यकता) के परिणामस्वरूप, कई संगणक प्रोग्राम डेटा ट्रांसकोडिंग के रूप में संकेतन योजनाओं के बीच डेटा का अनुवाद करने के लिए विकसित किए गए हैं। इनमें से कुछ का उल्लेख नीचे किया गया है।

क्रॉस-प्लेटफ़ॉर्म: यूनिक्स जैसा: माइक्रोसॉफ़्ट विंडोज़:
 * वेब ब्राउजर - अधिकांश आधुनिक वेब ब्राउजर में स्वचालित वर्ण संकेतन डिटेक्शन होता है। उदाहरण के लिए, फ़ायरफ़ॉक्स 3 पर, व्यू/वर्ण संकेतन सबमेनू देखें।
 * iconv - एनकोडिंग को बदलने के लिए एक प्रोग्राम और मानकीकृत API
 * luit - एक प्रोग्राम जो इनपुट और आउटपुट के संकेतन को अंतःक्रियात्मक रूप से चल रहे प्रोग्राम में परिवर्तित करता है
 * Convert_encoding.py - मनमाना एनकोडिंग और लाइन एंडिंग्स के बीच अवतरण फ़ाइलों को कनवर्ट करने के लिए एक पायथन-आधारित उपयोगिता
 * decodeh.py - एक एल्गोरिथ्म और एक स्ट्रिंग के संकेतन का अनुमान लगाने वाला मॉड्यूल
 * यूनिकोड के लिए अंतर्राष्ट्रीय घटक - वर्णसेट रूपांतरण करने के लिए C और जावा लाइब्रेरी का एक सेट। uconv को ICU4C से इस्तेमाल किया जा सकता है।
 * chardet - यह मोज़िला स्वचालित-संकेतन-डिटेक्शन कोड का पायथन संगणक भाषा में अनुवाद है।
 * यूनिक्स फ़ाइल कमांड के नए संस्करण वर्ण संकेतन (सिगविन पर भी उपलब्ध) की मूल पहचान करने का प्रयास करते हैं।
 * charset - C++/उपयोगकर्ता-परिभाषित धाराओं के बीच कनवर्ट करने के लिए सरल इंटरफ़ेस के साथ C++ टेम्पलेट लाइब्रेरी। चारसेट ने कई कैरेक्टर-सेट्स को परिभाषित किया है और आपको एंडियननेस के समर्थन के साथ यूनिकोड फॉर्मेट का उपयोग करने की अनुमति देता है।
 * cmv - फाइलनामों को ट्रांसकोडिंग के लिए एक सरल उपकरण।
 * convmv - एक फ़ाइल नाम को एक संकेतन से दूसरे में परिवर्तित करता है।
 * cstocs - चेक और स्लोवाक भाषाओं के लिए फ़ाइल सामग्री को एक संकेतन से दूसरे संकेतन में कनवर्ट करता है।
 * एनका - दी गई अवतरण फाइलों के लिए एनकोडिंग का विश्लेषण करता है।
 * रिकोड - फ़ाइल की सामग्री को एक संकेतन से दूसरे में परिवर्तित करता है।
 * utrac - फ़ाइल की सामग्री को एक संकेतन से दूसरे संकेतन में परिवर्तित करता है।
 * Encoding.Convert - .NET API
 * MultiByteToWideChar/WideCharToMultiByte - ANSI से यूनिकोड और यूनिकोड से ANSI में कनवर्ट करने के लिए
 * cscvt - एक कैरेक्टर सेट कन्वर्ज़न टूल
 * enca - दी गई अवतरण फाइलों के लिए एनकोडिंग का विश्लेषण करता है।

यह भी देखें

 * प्रतिशत संकेतन
 * ऑल्ट कोड
 * HTML में कैरेक्टर एनकोडिंग
 * :श्रेणी:वर्ण संकेतन - सामान्य रूप से वर्ण संकेतन से संबंधित लेख
 * :श्रेणी:वर्ण सेट - विशिष्ट वर्ण संकेतन का विवरण देने वाले लेख
 * हेक्साडेसिमल#हेक्साडेसिमल का प्रतिनिधित्व करना
 * मोजीबेक - कैरेक्टर सेट मिसमैप।
 * Mojikyo - एक प्रणाली (ग्लाइफ सेट) जिसमें 100,000 से अधिक चीनी वर्ण चित्र सम्मिलित हैं, आधुनिक और प्राचीन, लोकप्रिय और अस्पष्ट।
 * प्रस्तुति अंश
 * TRON (संकेतन), TRON प्रोजेक्ट का हिस्सा, एक संकेतन प्रणाली है जो हान यूनिफिकेशन का उपयोग नहीं करता है; इसके बजाय, यह वर्णों के 16-बिट विमानों के बीच स्विच करने के लिए नियंत्रण कोड का उपयोग करता है।
 * यूनिवर्सल कैरेक्टर सेट कैरेक्टर
 * वर्णसेट सूँघना - कुछ अनुप्रयोगों में उपयोग किया जाता है जब वर्ण संकेतन मेटाडेटा उपलब्ध नहीं होता है

सामान्य वर्ण संकेतन

 * आईएसओ/आईईसी 646
 * ASCII
 * ईबीसीडीआईसी
 * आईएसओ/आईईसी 8859:
 * आईएसओ/आईईसी 8859-1|आईएसओ 8859-1 पश्चिमी यूरोप
 * आईएसओ/आईईसी 8859-2|आईएसओ 8859-2 पश्चिमी और मध्य यूरोप
 * ISO/IEC 8859-3|ISO 8859-3 पश्चिमी यूरोप और दक्षिण यूरोपीय (तुर्की, माल्टीज़ प्लस एस्पेरांतो)
 * ISO/IEC 8859-4|ISO 8859-4 पश्चिमी यूरोप और बाल्टिक देश (लिथुआनिया, एस्टोनिया, लातविया और लैप)
 * आईएसओ/आईईसी 8859-5|आईएसओ 8859-5 सिरिलिक वर्णमाला
 * आईएसओ/आईईसी 8859-6|आईएसओ 8859-6 अरबी
 * आईएसओ/आईईसी 8859-7|आईएसओ 8859-7 ग्रीक
 * आईएसओ/आईईसी 8859-8|आईएसओ 8859-8 हिब्रू
 * आईएसओ/आईईसी 8859-9|आईएसओ 8859-9 पश्चिमी यूरोप संशोधित तुर्की चरित्र सेट के साथ
 * आईएसओ/आईईसी 8859-10|आईएसओ 8859-10 पश्चिमी यूरोप नॉर्डिक भाषाओं के लिए युक्तियुक्त वर्ण सेट के साथ, जिसमें संपूर्ण आइसलैंडिक सेट शामिल है
 * आईएसओ/आईईसी 8859-11|आईएसओ 8859-11 थाई
 * आईएसओ/आईईसी 8859-13|आईएसओ 8859-13 बाल्टिक भाषाएं प्लस पोलिश
 * आईएसओ/आईईसी 8859-14|आईएसओ 8859-14 सेल्टिक भाषाएं (आयरिश गेलिक, स्कॉटिश, वेल्श)
 * ISO/IEC 8859-15|ISO 8859-15 ने ISO 8859-1 में यूरो चिह्न और अन्य युक्तिकरण जोड़े
 * आईएसओ/आईईसी 8859-16|आईएसओ 8859-16 मध्य, पूर्वी और दक्षिणी यूरोपीय भाषाएं (अल्बानियाई, बोस्नियाई, क्रोएशियाई, हंगेरियन, पोलिश, रोमानियाई, सर्बियाई और स्लोवेनियाई, लेकिन फ्रेंच, जर्मन, इतालवी और आयरिश गेलिक)
 * कोड पेज 437, कोड पेज 720, कोड पेज 737, कोड पेज 850, कोड पेज 852, कोड पेज 855, कोड पेज 857, कोड पेज 858, कोड पेज 860, कोड पेज 861, कोड पेज 862, कोड पेज 863, कोड पेज 865, कोड पेज 866, कोड पेज 869, कोड पेज 872
 * विंडोज कोड पेज | एमएस-विंडोज कैरेक्टर सेट:
 * लैटिन लिपि का उपयोग करने वाली मध्य यूरोपीय भाषाओं के लिए विंडोज-1250, (पोलिश, चेक, स्लोवाक, हंगेरियन, स्लोवेन, सर्बियाई, क्रोएशियाई, बोस्नियाई, रोमानियाई और अल्बानियाई)
 * सिरिलिक अक्षर के लिए विंडोज-1251
 * पश्चिमी भाषाओं के लिए विंडोज-1252
 * ग्रीक के लिए विंडोज-1253
 * तुर्की के लिए विंडोज-1254
 * हिब्रू के लिए विंडोज-1255
 * अरबी के लिए विंडोज़-1256
 * बाल्टिक भाषाओं के लिए Windows-1257
 * वियतनामी के लिए विंडोज-1258
 * मैक ओएस रोमन
 * KOI8-R, KOI8-U, KOI7
 * MIK कोड पेज
 * सूचना विनिमय के लिए भारतीय लिपि कोड
 * सूचना इंटरचेंज के लिए तमिल लिपि कोड
 * सूचना विनिमय के लिए वियतनामी मानक कोड
 * जेआईएस एक्स 0208 जापानी वर्ण एन्कोडिंग के लिए व्यापक रूप से तैनात मानक है जिसमें कई एन्कोडिंग रूप हैं।
 * शिफ्ट JIS (Microsoft कोड पृष्ठ 932 (Microsoft Windows) Shift_JIS की एक बोली है)
 * विस्तारित यूनिक्स कोड|ईयूसी-जेपी
 * आईएसओ/आईईसी 2022|आईएसओ-2022-जेपी
 * JIS X 0213, JIS X 0208 का विस्तारित संस्करण है।
 * शिफ्ट JIS|Shift_JIS-2004
 * विस्तारित यूनिक्स कोड|EUC-JIS-2004
 * आईएसओ/आईईसी 2022|आईएसओ-2022-जेपी-2004
 * जीबी मानकों की चीनी सूची
 * जीबी 2312
 * जीबीके (कैरेक्टर एन्कोडिंग) (माइक्रोसॉफ्ट कोड पेज 936)
 * जीबी 18030
 * ताइवान Big5 (एक अधिक प्रसिद्ध संस्करण Microsoft कोड पृष्ठ 950 है)
 * हांगकांग एचकेएससीएस
 * कोरियाई
 * केएस एक्स 1001 एक कोरियाई डबल-बाइट वर्ण एन्कोडिंग मानक है
 * विस्तारित यूनिक्स कोड#EUC-KR|EUC-KR
 * आईएसओ/आईईसी 2022|आईएसओ-2022-केआर
 * यूनिकोड (और उसके सबसेट, जैसे कि 16-बिट 'बेसिक मल्टीलिंगुअल प्लेन')
 * यूटीएफ-8
 * यूटीएफ-16
 * यूटीएफ -32
 * एएनएसईएल या आईएसओ / आईईसी 6937

बाहरी संबंध

 * Character sets registered by Internet Assigned Numbers Authority (IANA)
 * Characters and encodings, by Jukka Korpela
 * Unicode Technical Report #17: Character Encoding Model
 * Decimal, Hexadecimal Character Codes in HTML Unicode – Encoding converter
 * The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky (Oct 10, 2003)