अक्षर कूटन

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

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

इतिहास
चरित्र कोड का इतिहास मशीन-मध्यस्थ चरित्र-आधारित प्रतीकात्मक जानकारी के लिए एक बार-उपन्यास विद्युत साधनों का उपयोग करते हुए, एक दूरी पर विकसित होने की आवश्यकता को दर्शाता है। शुरुआती कोड मैनुअल और हाथ से लिखे गए एन्कोडिंग और साइफरिंग सिस्टम पर आधारित थे, जैसे बेकन के सिफर, ब्रेल, अंतर्राष्ट्रीय समुद्री सिग्नल फ्लैग, और चीनी टेलीग्राफ कोड के लिए चीनी अक्षरों के 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 पर आधारित) हैं, विवरण के लिए विंडोज कोड पेज देखें। अधिकांश, लेकिन सभी नहीं, कोड पेज के रूप में संदर्भित एन्कोडिंग सिंगल-बाइट एन्कोडिंग हैं (लेकिन बाइट आकार पर ऑक्टेट (कंप्यूटिंग) देखें।)

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

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


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

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

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

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