ஒருங்குறியும், UTF-8 குறிமுறையும்

கணினியில் சேமிக்கப்படும் எந்தவொரு தகவலும் பூச்சியம், ஒன்று என்ற இரு எண்களைக்கொண்ட பைனரியாக மட்டுமே சேமிக்கப்படும். எண்கள், எழுத்துகள், பிறகுறியீடுகள் என எதுவாக இருந்தாலும், கணினியைப்பொருத்தவரை அவை பூச்சியம் மற்றும் ஒன்று என்ற இரு எண்களைக்கொண்ட தொடராகவே குறிக்கப்படும். இப்படி எண்களுக்கும், எழுத்துகளுக்கும், குறியீடுகளுக்கும் ஒரு எண் ஒதுக்கப்பட்டு, அது பைனரி வடிவத்தில் சேமித்துவைக்கப்படும். இவ்வாறாக ஒரு குறியீட்டிற்கு ஒரு எண்ணை ஒதுக்கும் முறைக்கு குறிமுறை என்று பெயர். ஒதுக்கப்பட்ட எண்ணுக்கு குறியெண் (codepoint) என்று பெயர்.

தொடக்ககாலத்தில் வெறும் ஆங்கில எழுத்துகளும், சில எண்களும், குறியீடுகளும் கொண்ட 128 குறியீடுகளைமட்டும்கொண்ட அஸ்கி (ASCII) குறிமுறைதான் புழக்கத்தில் இருந்தது. கீழ்கண்ட அட்டவணையில் குறியீடுகளையும், அவற்றுக்கான அஸ்கி குறியெண்களையும் காணலாம்.

ascii

128 குறியீடுகளை சேமிக்க 7 பிட்டுகள் மட்டுமே போதுமானதாக இருந்ததால், அஸ்கி குறியெண்களுக்கு 0 முன்னொட்டாக சேர்க்கப்பட்டது. எடுத்துக்காட்டாக, ‘a’ (குறியெண் – 97) 01100001 ஆக சேமிக்கப்படுகிறது.

ஆனால், ஆங்கிலம் தவிர்த்து பிறமொழியெழுத்துக்களை அஸ்கியால் கையாளமுடியவில்லை. தமிழில் இச்சிக்கலை கையாளுவதற்கு டிஸ்கி (TSCII) என்ற குறிமுறை அறிமுகப்படுத்தப்பட்டது. டிஸ்கி குறிமுறையின் படி, அஸ்கியில் பயன்படாமலிருந்த எட்டாவது பிட்டையும் சேர்த்து தமிழெழுத்துக்களுக்கான குறியெண்கள் வழங்கப்பட்டன. அதற்கான அட்டவணையை கீழே காணலாம்.

Tsciicharmap

மேலும், இந்தியமொழிகளுக்கான குறிமுறையாக இஸ்கி (ISCII) என்ற குறிமுறையும் அறிமுகப்படுத்தப்பட்டது. ஆனால், இவ்வாறு ஒவ்வொருமொழிக்கும், அல்லது ஒவ்வொரு மொழிக்குடும்பத்துக்கும் ஒரு குறிமுறை புழக்கத்திலிருப்பது குழப்பத்தை விளைவிக்குமென்பதால், உலகமொழிகளனைத்துக்குமான குறியெண்கள் ஒதுக்கும் முயற்சியின் விளைவாக ஒருங்குறி உருவாக்கப்பட்டது. இன்றளவில் 136,755 குறியீடுகள் ஒருங்குறியில் அடையாளப்படுத்தப்பட்டுள்ளன. தமிழுக்கான ஒருங்குறித்தொகுதியை கீழே காணலாம்.

unicode-tamil-block

இங்கே கொடுக்கப்பட்டுள்ளவை எழுத்துகளுக்கான குறியெண்கள் மட்டுமே (எ.கா: அ – 2949, ஆ – 2950). கணினியில் இவற்றைச் சேமிக்கவும், கணினிகளுக்கிடையே பரிமாறிக்கொள்ளவும், இவற்றை பைனரியாக மாற்றவேண்டியது அவசியம். இதற்கென பல வழிமுறைகள் உள்ளன. UTF-8, UTF-16 போன்றவை அவற்றுள் பரவலாக பயன்படுத்தப்படும் வழிமுறைகளாகும். இவற்றுள் UTF-8 பற்றி இப்பதிவில் அறிந்துகொள்ளலாம்.

UTF-8 என்பது 1 முதல் 4 பைட்டுகளைக்கொண்டு ஒருங்குறியெண்களைசேமிக்கும் குறிமுறையாகும். ஒரு பைட்டு மட்டும் பயன்படுத்தும் போது, அஸ்கி குறிமுறையைப்போல, முதல் பிட்டு 0 ஆக இருக்கிறது. மற்ற ஏழு பிட்டுகள் குறியெண்களைக்குறிக்கப் பயன்படுத்தப்படுகின்றன. 2, 3, 4 பைட்டு அளவுள்ள UTF-8 குறியீடுகளில், முதல் சில பிட்டுகள் மொத்த பைட்டின் நீளத்தையும், தொடர்பைட்டு (Continuation byte) என்பதைக்குறிக்கவும் பயன்படுகின்றன.

0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

மேற்கண்ட படத்தில் சிவப்புநிறத்திலுள்ளவை தலைப்புகளாகும். இவைநீங்கலாக, பிற பிட்டுகள் குறியெண்களைக்குறிக்க பயன்படுத்தப்படும். ஓர் ஒருங்குறியெண்ணை UTF-8 குறிமுறைக்கு மாற்றும் வழிமுறைகளை கீழே காணலாம்.

அ-ன் குறியெண் 2949.

இதன் பைனரி வடிவம் – 101110000101

இவ்வெண் இரு பைட்டு அளவுள்ளதால், அதனை UTF-8ல் குறியிட நமக்கு மூன்று பைட்டுகள் தேவைப்படுகின்றது. இதற்காக பச்சைநிறத்திலுள்ள 0000 முன்னொட்டாக சேர்க்கப்படுகிறது.

0000 01110 000101

இதன் UTF-8 வடிவம் – 11100000 10101110 10000101 => E0 AE 85

UTF-8ல் மூன்று வகையான பைட்டுகள் உள்ளன.

தொடக்க பிட்டுகள் வகை
0 தனி பைட்டு
10 தொடர் பைட்டு
110 / 1110 / 11110 Nல் முதலாவது பைட்டு
இங்கே N என்பது பூச்சியத்திற்கு முன்னதாகவரும் ஒன்றுகளின் எண்ணிக்கையாகும்.

ஒன்று முதல் நான்கு பைட்டுகளைப் பயன்படுத்தும் எடுத்துக்காட்டுகளுடன் இப்பதிவை நிறைவுசெய்யலாம்.

குறியீடு UTF-8 பைட்டுகள்
a 01100001
ë 11000011 10101011
11100000 10101110 10000101
🍠 11110000 10011111 10001101 10100000

இங்கே a தனிபைட்டாக குறியிடப்பட்டுள்ளது.

அ – மூன்று பைட்டுகளை ஆக்கிரமித்துள்ளது. எனவே இதன் முதல் பைட்டில் “1110” என்ற தலைப்பும், பிற பைட்டுகளில் “10” என்ற தலைப்பும் கொடுக்கப்பட்டுள்ளது.

 

மூலம்: Nathan Long எழுதிய கட்டுரையின் சுருக்கம். அவரது அனுமதியோடு மொழிபெயர்க்கப்பட்டுள்ளது.

%d bloggers like this: