# यूनिकोड

Cgनिषाद
**यूनिकोड** प्रत्येक अक्षर के लिए एक विशेष संख्या प्रदान करता है, चाहे कोई भी कम्प्यूटर प्लेटफॉर्म, प्रोग्राम अथवा कोई भी भाषा हो। यूनिकोड स्टैंडर्ड को एपल, एच.पी., आई.बी.एम., जस्ट सिस्टम, माइक्रोसॉफ्ट, ऑरेकल, सैप, सन, साईबेस, यूनिसिस जैसी उद्योग की प्रमुख कम्पनियों और कई अन्य ने अपनाया है। यूनिकोड की आवश्यकता आधुनिक मानदंडों, जैसे एक्स.एम.एल, जावा, एकमा स्क्रिप्ट (जावास्क्रिप्ट), एल.डी.ए.पी., कोर्बा ३.०, डब्ल्यू.एम.एल के लिए होती है और यह आई.एस.ओ/आई.ई.सी. १०६४६ को लागू करने का अधिकारिक तरीका है। यह कई संचालन प्रणालियों, सभी आधुनिक ब्राउजरों और कई अन्य उत्पादों में होता है। यूनिकोड स्टैंडर्ड की उत्पति और इसके सहायक उपकरणों की उपलब्धता, हाल ही के अति महत्वपूर्ण विश्वव्यापी सॉफ्टवेयर प्रौद्योगिकी रुझानों में से हैं।

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

## यूनिकोड क्या है?

यूनिकोड प्रत्येक अक्षर के लिए एक विशेष नम्बर प्रदान करता है,

* चाहे कोई भी प्लैटफ़ॉर्म हो,
* चाहे कोई भी प्रोग्राम हो,
* चाहे कोई भी भाषा हो।

कम्प्यूटर, मूल रूप से, नम्बरों से सम्बन्ध रखते हैं। ये प्रत्येक अक्षर और वर्ण के लिए एक नम्बर निर्धारित करके अक्षर और वर्ण संग्रहित करते हैं। यूनिकोड का आविष्कार होने से पहले, ऐसे नम्बर देने के लिये सैंकड़ों विभिन्न संकेत लिपि प्रणालियाँ थीं। किसी एक संकेत लिपि में पर्याप्त अक्षर नहीं हो सकते हैं : उदाहरण के लिए, यूरोपीय संघ को अकेले ही, अपनी सभी भाषाओं को कवर करने के लिये अनेक विभिन्न संकेत लिपियों की आवश्यकता होती है। अंग्रेजी जैसी भाषा के लिये भी, सभी अक्षरों, विरामचिह्नों और सामान्य प्रयोग के तकनीकी प्रतीकों हेतु एक ही संकेत लिपि पर्याप्त नहीं थी।

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

**यूनिकोड से यह सब कुछ बदल रहा है!**

## यूनिकोड की विशेषताएँ

* (1) यह विश्व की सभी लिपियों से सभी संकेतों के लिए एक अलग कोड बिन्दु प्रदान करता है।

* (2) यह वर्णों (कैरेक्टर्स) को एक कोड देता है, न कि ग्लिफ (glyph) को।

* (3) जहाँ भी सम्भव यूनिकोड होता है, यह भाषाओं का एकीकरण करने का प्रयत्न करता है। इसी नीति के अन्तर्गत सभी पश्चिम यूरोपीय भाषाओं को लैटिन के अन्तर्गत समाहित किया गया है; सभी स्लाविक भाषाओं को सिरिलिक (Cyrilic) के अन्तर्गत रखा गया है; हिन्दी, संस्कृत, मराठी, नेपाली, सिन्धी, कश्मीरी आदि के लिये 'देवनागरी' नाम से एक ही खण्ड दिया गया है; चीनी, जापानी, कोरियाई, वियतनामी भाषाओं को 'युनिहान्' (UniHan) नाम से एक खण्ड में रखा गया है; अरबी, फारसी, उर्दू आदि को एक ही खण्ड में रखा गया है।

* (4) बायें से दायें लिखी जाने वाली लिपियों के अतिरिक्त दायें-से-बायें लिखी जाने वाली लिपियों (अरबी, हिब्रू आदि) को भी इसमें शामिल किया गया है। ऊपर से नीचे की तरफ लिखी जाने वाली लिपियों का अभी अध्ययन किया जा रहा है।

* (5) यह ध्यान रखना आवश्यक है कि यूनिकोड केवल एक कोड-सारणी है। इन लिपियों को लिखने/पढ़ने के लिए इनपुट मैथड एडिटर और फॉण्ट-फाइलें आवश्यक हैं।

## यूनिकोड का महत्व एवं लाभ

* एक ही दस्तावेज में अनेकों भाषाओं के अक्षर लिखे जा सकते हैं।

* अक्षरों को केवल एक निश्चित तरीके से संस्कारित करने की आवश्यकता पड़ती है। जिससे विकास-व्यय एवं अन्य व्यय कम लगते हैं।

* किसी सॉफ़्टवेयर-उत्पाद का एक ही संस्करण पूरे विश्व में चलाया जा सकता है। क्षेत्रीय बाजारों के लिए अलग से संस्करण निकालने की आवश्यकता नहीं पड़ती है।

* किसी भी भाषा का अक्षर पूरे जगत में बिना किसी रुकावट के चल जाता है। पहले इस तरह की बहुत समस्याएँ आती थीं।

### हानियाँ

यूनिकोड, आस्की तथा अन्य कैरेकटर कोडों की अपेक्षा अधिक स्मृति (मेमोरी) लेता है। कितनी अधिक स्मृति लगेगी यह इस बात पर निर्भर करता है कि आप कौन सा यूनिकोड प्रयोग कर रहे हैं। UTF7, UTF8, UTF16 या वास्तविक यूनिकोड - एक अक्षर अलग-अलग बाइट प्रयोग करते हैं।

## देवनागरी यूनिकोड

* देवनागरी यूनिकोड की परास (रेंज) 0900 से 097F तक है। (दोनो संख्याएँ षोडषाधारी हैं)

* क्ष, त्र एवं ज्ञ के लिये अलग से कोड नहीं है। इन्हें संयुक्त वर्ण मानकर अन्य संयुक्त वर्णों की भाँति इनका अलग से कोड नहीं दिया गया है।

* इस परास (रेंज) में बहुत से ऐसे वर्णों के लिये भी कोड दिये गये हैं जो सामान्यतः हिन्दी में व्यवहृत नहीं होते। किन्तु मराठी, सिन्धी, मलयालम आदि को देवनागरी में सम्यक ढँग से लिखने के लिये आवश्यक हैं।

* नुक्ता वाले वर्णों (जैसे ज़) के लिये यूनिकोड निर्धारित किया गया है। इसके अलावा नुक्ता के लिये भी अलग से एक यूनिकोड दे दिया गया है। अतः नुक्तायुक्त अक्षर यूनिकोड की दृष्टि से दो प्रकार से लिखे जा सकते हैं - एक बाइट यूनिकोड के रूप में या दो बाइट यूनिकोड के रूप में। उदाहरण के लिये **ज़** को ' ज ' के बाद नुक्ता (़) टाइप करके भी लिखा जा सकता है।

## यूनिकोड कन्सॉर्शियम

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

## UTF-8, UTF-16 तथा UTF-32

1. यूनिकोड का मतलब है सभी लिपिचिह्नों की आवश्यकता की पूर्ति करने में सक्षम 'एकसमान मानकीकृत कोड'।
2. पहले सोचा गया था कि केवल 16 बिट के माध्यम से ही दुनिया के सभी लिपिचिह्नों के लिये अलग-अलग कोड प्रदान किये जा सकेंगे। बाद में पता चला कि यह कम है। फिर इसे 32 बिट कर दिया गया। अर्थात इस समय दुनिया का कोई संकेत नहीं है जिसे 32 बिट के कोड में कहीं न कहीं जगह न मिल गयी हो।
3. 8 बिट के कुल 2 पर घात 8 = 256 अलग-अलग बाइनरी संख्याएँ बन सकती हैं; 16 बिट से 2 पर घात 16 = 65536 और 32 बिट से 4294967296 भिन्न (distinct) बाइनरी संख्याएँ बन सकती हैं।
4. यूनिकोड के तीन रूप प्रचलित हैं। UTF-8, UTF-16 और UTF-32.
5. इनमें अन्तर क्या है? मान लीजिये आपके पास दस पेज का कोई टेक्स्ट है जिसमें रोमन, देवनागरी, अरबी, गणित के चिन्ह आदि बहुत कुछ हैं। इन चिन्हों के यूनिकोड अलग-अलग होंगे। यहाँ ध्यान देने योग्य बात है कि कुछ संकेतों के ३२ बिट के यूनिकोड में शुरू में शून्य ही शून्य हैं (जैसे अंग्रेजी के संकेतों के लिये)। यदि शुरुआती शून्यों को हटा दिया जाय तो इन्हें केवल 8 बिट के द्वारा भी निरूपित किया जा सकता है और कहीं कोई भ्रम या कॉन्फ़्लिक्ट नहीं होगा। इसी प्रकार रूसी, अरबी, हिब्रू आदि के यूनिकोड ऐसे हैं कि शून्य को छोड़ देने पर उन्हें प्राय: 16 बिट = 2 बाइट से निरूपित किया जा सकता है। देवनागरी, जापानी, चीनी आदि को आरम्भिक शून्य हटाने के बाद प्राय: 24 बिट = तीन बाइट से निरूपित किया जा सकता है। किन्तु बहुत से संकेत होंगे जिनमें आरम्भिक शून्य नहीं होंगे और उन्हें निरूपित करने के लिये चार बाइट ही लगेंगे।
6. बिन्दु (5) में बताए गये काम को UTF-8, UTF-16 और UTF-32 थोड़ा अलग अलग ढंग से करते हैं। उदाहरण के लिये यूटीएफ़-8 क्या करता है कि कुछ लिपिचिह्नों के लिये 1 बाइट, कुछ के लिये 2 बाइट, कुछ के लिये तीन और चार बाइट इस्तेमाल करता है। लेकिन UTF-16 इसी काम के लिये १६ न्यूनतम बिटों का इस्तेमाल करता है। अर्थात जो चीजें UTF-8 में केवल एक बाइट जगह लेती थीं वे अब 16 बिट == 2 बाइट के द्वारा निरूपित होंगी। जो UTF-8 में 2 बाइट लेतीं थी यूटीएफ-16 में भी दो ही लेंगी। किन्तु पहले जो संकेतादि 3 बाइट या चार बाइट में निरूपित होते थे यूटीएफ-16 में 32 बिट = ४

4 बाइट के द्वारा निरूपित किये जायेंगे। (आपके पास बड़ी-बडी ईंटें हों और उनको बिना तोड़े खम्भा बनाना हो तो खम्भा ज्यादा बड़ा ही बनाया जा सकता है।)

1. लगभग स्पष्ट है कि प्राय: UTF-8 में इनकोडिंग करने से UTF-16 की अपेक्षा कम बिट्स लगेंगे।
2. इसके अलावा बहुत से पुराने सिस्टम 16 बिट को हैंडिल करने में अक्षम थे। वे एकबार में केवल 8-बिट ही के साथ काम कर सकते थे। इस कारण भी UTF-8 को अधिक अपनाया गया। यह अधिक प्रयोग में आता है।
3. UTF-16 और UTF-32 के पक्ष में अच्छाई यह है कि अब कम्प्यूटरों का हार्डवेयर 32 बिट या 64 बिट का हो गया है। इस कारण UTF-8 की फाइलों को 'प्रोसेस' करने में UTF-16, UTF-32 वाली फाइलों की अपेक्षा अधिक समय लगेगा।

## उपयोगी यूनिकोड वर्तमान स्थिती

* Unicode Tools :

* (क) String to Unicode Value ;
* (ख) Numeric Value to String ;
* (ग) Numeric Value Generator

* UniView - An XHTML-based application to look up characters, character blocks, paste in and discover unknown characters, store your own info about characters, search on character names, do hex/dec/ncr conversions, highlight character types, etc. etc.
* UTF-8, UTF-16, UTF-32 Code Charts and Converter
* Character map (requires जावास्क्रिप्ट)

### फ़ॉण्ट परिवर्तक

अगर कोई लेख किसी जगह पर किसी ऐसे फ़ॉण्ट को प्रयोग कर के लिखा गया है। जो कि यूनिकोड नहीं है, तो फ़ॉण्ट परिवर्तक प्रोग्रामों का प्रयोग करके उसे यूनिकोड में बदला जा सकता है।

विस्तृत जानकारी के लिये देखें - 'फॉण्ट परिवर्तक'

### जंक (विकृत) यूनिकोड को सही करने के उपाय

याहू जैसे ईमेल सेवाओं में यूनिकोड कैरेक्टर विकृत हो जाने पर मूल ईमेल प्राप्त कर पढ़ने के ऑनलाईन औजार

* बालेन्दु शर्मा दाधीच द्वारा विकसित आनलाइन यूनिकोड विकृति संशोधक
* Hindi Unicode Repair Tool

## सन्दर्भ

## इन्हें भी देखें

* इण्डिक यूनिकोड
* देवनागरी यूनिकोड खण्ड
* इस्की (ISCII)
* आस्की (ASCII)
* यूनिकोड समानुक्रमण अल्गोरिद्म (यूनिकोड कोलेशन अल्गोरिद्म)

## बाहरी कड़ियाँ

* Unicode to Krutidev converter Archived 2020-10-16 at the वेबैक मशीन
* यूनिकोड.ऑर्ग
* यूनिकोड क्या है?
* भूमंडलीकरण में आईटी का योगदान है यूनिकोड
* यूनिकोड-सक्षम उत्पादों की सूची - आपरेटिंग सिस्टम, ब्राउजर, प्रोग्रामिंग की भाषायें, एवं अन्य अनेक उत्पाद
* FAQ about Unicode for Indic Scripts and Languages
* UTF-8 encoding table and Unicode characters
* DecodeUnicode - यूनिकोड विकी, 50.000 gifs
* Unicode Entity Codes for the Devanāgarī Script
* देवनागरी का यूनिकोड चार्ट (स्टैण्डर्ड 5.0)
* Table of Unicode characters from 1 to 6553
* 5
* decodeunicode.org images of all 98,884 graphical unicode characters (German/English, full text search)
* Tim Bray's Characters vs Bytes explains how the different encodings work.
* **Unicode** (good introduction)
* हिन्दी एवं देवनागरी के लिए यूनिकोडोत्तर दौर की चुनौती अलग और बड़ी हैं (बालेन्दु शर्मा दाधीच)
* The Significance of Unicode
* हिंदी में यह क्रांति न आती यदि यूनिकोड न होता! (अगस्त २०१५ ; बालेन्दु शर्मा दाधीच)

### यूनिकोड उपकरण तथा फॉण्ट

* Unicode to Chanakya Font Converter - यूनिकोड से चाणक्य फॉण्ट परिवर्तक
* Unicode Code Converter v7.09 - यूनिकोड को तरह-तरह के वैकल्पिक रूपों में बदलने वाला आनलाइन प्रोग्राम
* Free C++ Unicode Libraries
* Regular Expression Unicode Syntax Reference
* AnalyzingUnicodeText with RegularExpressions (Andy Heninger, IBM Corporation)
* Alan Wood's Unicode Resources Contains lists of word processors with Unicode capability; fonts and characters are grouped by type; characters are presented in lists, not grids.