कॅरॅक्टर एनकोडींग बद्दल माहिती

'कॅरॅक्टर एनकोडींग' बद्दल आधी माहिती दिल्यास यूनिकोड म्हणजे काय हे समजावणे सोपे जाते.


कॅरॅक्टर एनकोडींगबद्दल मी विकीपीडिया.ऑर्ग साईटवर एक लहानसा लेख लिहिला आहे. मूळ साईटचा पत्ता आहे : http://mr.wikipedia.org/wiki/CharacterEncoding


लेख खाली जसाच्यातसा देत आहे.


टीप : हा लेख अद्याप पूर्ण झालेला नाही. पूर्ण लेख हळूहळू वर दर्शवलेल्या साईटवर प्रसिद्ध होईल.


-----------------------------------------


'कॅरॅक्टर एनकोडिंग' ह्या संज्ञेची अगदी सोपी व्याख्या म्हणजे कोठल्याही 'कोणत्याही एका मानवी भाषेतील सर्व अक्षरे, चिन्हे यांना काही विशिष्ट क्रमाने ठरवून दिलेले गणितीय आकडे'.


उदाहरणार्थ, कल्पना करा की एका भाषेत ('क', 'ख, 'ग', 'घ, 'ञ') ही फक्त पाच अक्षरे आहेत. समजा आपण ठरवले की ही पाच अक्षरे (२१,२२,२३,२४,२५) ह्या पाच आकड्यांनी ओळखायची. असे केल्यास ह्या काल्पनिक भाषेतील कोणताही शब्द किंवा वाक्य आपल्याला हे पाच आकडे वापरून लिहिता येईल. उदा. 'कखग' हा शब्द '२१२२२३' असा लिहिता येईल व 'खघकञ' हा शब्द '२२२४२१२५' असा लिहिता येईल.
येथे (२१,२२,२३,२४,२५) ह्या आकड्यांच्या समूहाचे ('क', 'ख, 'ग', 'घ, 'ञ') ह्या पाच अक्षरांच्या समूहाशी आपण जे नाते ठरवले त्यास एक 'character encoding' अथवा 'character set' कॅरॅक्टर सेट म्हटले जाते.



हेच उदाहरण पुढे वाढवल्यास मराठीतील १२ स्वर आणि ३६ व्यंजन अक्षरे ही एकूण ४८ आकड्यांनी ओळखता येतील. असे केल्यास हा नवीन 'character set' एकूण ४८ अक्षरांना आकड्यांचे स्वरूप देईल.


पण असे आकडे ठरवण्याची गरज काय ?


असे करण्याचे एकच कारण आहे व ते म्हणजे संगणकास कोणत्याही भाषेचे ज्ञान नसते. संगणकावर साठवलेली सर्व माहिती ही केवळ आकड्यांच्या स्वरूपात साठवलेली असते. त्याचप्रमाणे संगणकास समजणारी सर्व आज्ञावली हीदेखील आकड्यांच्याच स्वरूपात साठवली जाते.
संगणकाची ही रचना लक्षात घेतली की 'character encoding' अथवा 'character set' चे महत्व लक्षात येईल. संगणकास भाषा वा अक्षरे समजत नसल्यामुळे, सर्व अक्षरे, चिन्हे (उदा प्रश्नचिन्ह, अल्पविराम इत्यादी) हीदेखील केवळ आकड्यांच्याच स्वरूपात साठवावी लागतात. त्यामुळे कोणताही मजकूर साठवताना कोणत्यातरी एका कॅरॅक्टर एनकोडिंगच्या सहाय्याने तो आकड्यांच्या स्वरूपात साठवला जातो. तो मजकूर पुन्हा दाखवताना (उदा. काँप्युटर मॉनिटरवर दाखविताना ), त्याच आकड्यांवरून अक्षरे ठरवून दाखवली जातात.


अश्या प्रकारचा एक 'character set' आहे, जो जगातल्या सध्याच्या बहुतांश संगणकांतील बहुतेक सर्व सॉफ्टवेअरस् मध्ये वापरला जातो - तो म्हणजे ASCII (American Standard Code for Information Interchange ह्या नावाचे लघुरूप). ASCII ह्या सेटमध्ये सर्व रोमन अक्षरे, अंक, चिन्हे (पूर्णविराम, प्रश्नचिन्ह, उद्गारचिन्ह इत्यादी) , तसेच इतर काही चिन्हे ह्यांच्यासाठी एकूण १२८ आकड्यांचा क्रम ठरवला गेला आहे. A ते Z ही अक्षरे ६५ ते ९० ह्या आकड्यांनी तर a ते z ही अक्षरे ९७ ते १२२ ह्या आकड्यांनी ओळखली जातात. अक्षरेच नव्हे तर अंकदेखील काही विशिष्ट आकड्यांनी दर्शविले जातात. 0 ते 9 हे अंक ASCII मध्ये ४८ ते ५७ असे साठवले जातात. दोन शब्दांमधली रिकामी जागा दर्शविण्यासाठी ३२ हा आकडा आहे.
उदा. cat हा शब्द ASCII मध्ये ९९ ९७ ११६ ह्या तीन आकड्यांत साठवला जातो; तर Cat हा शब्द ६७ ९७ ११६ असा साठवला जातो. 'Windows 95' हा मजकूर '८७ १०५ ११० १०० १११ ११९ ११५ ३२ ५७ ५३' असा होईल व संगणकात साठवला जाईल.


ASCII प्रमाणे इतर अनेक कॅरॅक्टर सेटस् प्रचलित असून बहुतांश देशांमध्ये त्या देशाच्या भाषेप्रमाणे कोणतातरी एक 'character set' प्रमाण मानला जातो. भारतीय भाषांकरिता प्रमाण कॅरॅक्टर सेट ISCII हा आहे. (हा भारतीय सरकारद्वारे साधारणतः १९८० च्या दशकात विकसीत करण्यात आला)



मग काँप्युटरवर ASCII वापरत असल्यास दुसरं एखादं character encoding वापरता येईल का ?


हो!
आपण एक गोष्ट लक्षात ठेवली पाहिजे की ASCII जरी अतिशय प्रचलीत असला तरी संगणकाच्या मूळ बांधणीत ASCII साठी काहीही विशेष रचना केलेली नसते. तसेच कोणत्याही संगणकावर केवळ एकच character encoding वापरणे भाग असते असेही नाही. एकाच संगणकावर अनेक विविध character encoding वापरले जाऊ शकतात - नव्हे, हल्लीच्या बहुतांश संगणकात ही सोय असतेच. शेवटी कुठलाही मजकूर साठवताना, त्या मजकूराच्या भाषेनुसार character encoding ची निवड करावी लागते.
उदा. समजा माझ्या काँप्युटरवर ASCII व ISCII हे दोन्ही character encoding उपलब्ध असल्यास मी इंग्लिश व मराठी ह्या भाषांमध्ये मजकूर साठवू शकतो.
मात्र, कोठल्याही काँप्युटरवर तुम्हाला मराठीत टायपिंग करता येईल की नाही, तसेच मराठीतला मजकूर वाचता येईल की नाही हे तुमच्या काँप्युटरची ऑपरेटिंग सिस्टीमवर, तुम्ही कोणत्या सॉफ्टवेअरमध्ये काम करत आहात व इतर काही गोष्टींवर अवलंबून आहे.

मग फाँट म्हणजे काय ? फाँटचा character encoding शी काही संबंध आहे का ?


हो. फाँटचा character encoding शी संबंध आहे.



काही प्रगत कॅरॅक्टर सेटस् व ह्या शास्त्रातील प्रगती :


ASCII हा कॅरॅक्टर सेट मूलतः अमेरिकेत इंग्लिशमध्ये वापरण्यासाठी बनवला गेला होता. जसजसा संगणकांचा वापर व त्याचे उपयोग वाढू लागले तसतश्या ASCII च्या मर्यादा लक्षात येऊ लागल्या.
काही वेळा एकाच मजकूरात दोन किंवा जास्त भाषांमधील वाक्य वा शब्द असू शकतात. अश्या वेळी त्या सर्व भाषांतील सर्व अक्षरे असलेल्या एखाद्या कॅरॅक्टर सेटची गरज भासते. सध्या असा एक कॅरॅक्टर सेट आहे - यूनिकोड(UNICODE). हा कॅरॅक्टर सेट जागतीक दृष्ट्या प्रमाण मानला जातो.
यूनिकोडची माहिती www.unicode.org ह्या साईटवर मिळू शकते.