Az UTF–8 változó hosszúságú, veszteségmentes karakterkódolási eljárás, a különböző karakterkódolási hiányosságok orvoslására.
Az informatika fejlődése során számos karakterkódolási eljárás primitív elképzelésre épűl, csak részben tudják kielégíteni a különböző nemzetek elvárásait. A változás folyamatát elősegítő technikai követelmények adottak. A hosszan tartó elhúzódás okai összetett negatív emberi tényezőkben keresendő.
A kialakult különböző kódtáblák más-más számkódokat párosítanak ugyanahhoz a karakterhez, az adott nyelv vagy a használt szoftver fejlesztőjének szükségleteihez igazodva. Gyakorlatilag egyik kódtáblából sem lehetséges előállítani mindazon (tipográfiai) írásjelek összességét, amelyekre valamely nemzeti nyelvnek különböző területein szükség lehet.
Az internet, a globalizáció előretörésével egyre erősebb az igény, hogy egyetlen univerzális karakterkódolást alkalmazzanak, amit minden szoftver, minden elektronikai kütyü ugyanúgy képes kezelni. Így képes legyen akár egyazon dokumentumban vagy eszközön különböző nemzeti nyelvek írásjeleit helyesen megjeleníteni. Mindezekre napjainkban csak az Unicode, illetve az Unicode alapra épülő optimálisabban kódoló UTF–8 alapú rendszerek képesek.
AZ ASCII kódrendszer kialakítása az 1963-as ASA (American Standards Association) szabványig nyúlik vissza. Az abban az időben létező mechanikus működésű perifériákra (teletype, telex, géptávíró) lett kifejlesztve.
Az ASCII karakterkészlet 128 hétbites, különböző kódot tartalmaz. Mindegyike egy-egy vezérlő vagy grafikus karaktert reprezentál. A latin ábécén alapul, de angol nyelvterületen kívül nem tudja kielégíteni az igényeket.
Használatának alkalmatlanságát a magyar és más nyelvterületen jól bizonyítják a korábbi távirati megoldások elterjedése.
Ödön testvérem én hiába erőlködnék és írnék ékezeteket primitív gépen
OOdoon testveerem een hiaaba eroolkoodneek ees iirneek eekezeteket primitiiv geepen
O:do:n testve'rem e'n hia'ba ero"lko:dne'k e's i'rne'k e'kezeteket primiti'v ge'pen
Odon testverem en hiaba erolkodnek es irnek ekezeteket primitiv gepen
A gépi megjelenítés elterjedése az angol nyelvterületen kívüli, egyre jobban felszínre hozta az ASCII hiányosságait. 1987-ben a nemzetköziség problémájának megoldására megszületett az ISO–8859 család első tagja ISO–8859-1 (Latin–1) néven, amely több nyugat európai nyelv ábécéjét támogatja, úgy mint: francia, német, spanyol, olasz és skandináv. Az első 127 karakter egy az egyben tartalmazza az ASCII készletet, valamint 161-től 190-ig különböző szimbólumokat és 191-től 255-ig a 215. és 247. hely kivételével ékezetes karaktereket.
Az ISO–8859 tervezésekor arra törekedtek, hogy több nyelvben is használhatók legyenek egymás betűi. A rendelkezésre álló 94-96 hely nem elegendő még a latin ábécét használó népek összes betűinek kódolására sem, de még mindig megoldatlan lenne a görög, arab, héber, cirill vagy más ázsiai népek igényei. Ennek érdekében jöttek létre a különböző ISO–8859-n kódtáblák.
| Kódolás | Régió | Nyelvek | |
|---|---|---|---|
| ISO–8859-1 | Latin–1 | nyugat-európai | dán, holland, angol, finn, francia, német, izlandi, ír, olasz, norvég, portugál, rétoromán, skót, spanyol, és svéd, albán, afrikaans és szuahéli |
| ISO–8859-2 | Latin–2 | közép-európai | bosnyák, lengyel, horvát, cseh, szlovák, szlovén, és magyar |
| ISO–8859-3 | Latin–3 | dél-európai | eszperantó, máltai, török |
| ISO–8859-4 | Latin–4 | észak-európai | észt, lett, litván, grönlandi, és számi |
| ISO–8859-5 | Cirill | cirill | belorusz, bolgár, macedón, orosz, szerb, és ukrán |
| ISO–8859-6 | Arab | arab | arab |
| ISO–8859-7 | Görög | görög | görög, ó-görög |
| ISO–8859-8 | Héber | héber | héber |
| ISO–8859-9 | Latin–5 | török | török, kurd |
| ISO–8859-10 | Latin–6 | északi | A Latin-4 átrendezése, a északi nyelvek számára |
| ISO–8859-11 | Thai | thai | thai |
| ISO–8859-12 | Nem készült el! | ||
| ISO–8859-13 | Latin–7 | balti | Latin–6-ból hiányzó karakterek a litván és balti nyelvekből |
| ISO–8859-14 | Latin–8 | kelta | gall, breton |
| ISO–8859-15 | Latin–9 | nyugat-európai | Átdolgozott nyugat-európai az Euro szimbólummal (€) |
| ISO–8859-16 | Latin–10 | délkelet-európai | albán, horvát, magyar, olasz, lengyel, román, szlovén, finn, francia, német és ír |
A tejes magyar ábécét az ISO–8859-2 (latin–2) foglalja magába. Tartalmazza az előbbiből hiányzó magyar Ű,ű,Ő,ő betűket is a 219–251–212–244 helyeken, míg az ISO-8859-1-ben Û,û,Ô,ô betűk találhatóak. Magyar dokumentumokban gyakran találkozni még a Õ,õ, mint „helyettesítő” karakterek.
Az internetes böngésző programok a mai napig az ISO–8859-1 alapértelmezett kódolással jelenítik meg azon internetes oldalakat, amelyeknél nincs beállítva más karakterkódolás, de helytelen szerver beállítások is közrejátszanak. Ebből kifolyólag az ISO–8859-1 a 191–255 tartományában lévő karaktereket nem tudják helyesen megjeleníteni egy UTF–8-ban kódolt dokumentumban. A legtöbb böngésző program lehetőséget nyújt az oldal karakterkódolásának kézi kiválasztására.
A fentebb látott táblázatból egyértelműen kiderül, hogy a különböző ISO–8859-n kódolású dokumentumok átvitele nehézségeket okoz. Több nyelvű szöveg megjelenítésére alkalmatlan, jól tükrözi a létező problémát pl.: az elektronikus levelezés, vagy a gondatlanul szerkesztett internetes oldalak.
A korábban említésre került problémák, a különböző karakterkódolási hiányosságok orvoslására 1993-ban Ken Thompson és Rob Pike munkája nyomán került hivatalos bemutatásra az UTF–8 egy San Diego-i USENIX konferencián.
Az UTF–8 változó hosszúságú, veszteségmentes karakterkódolási eljárás, a 16 bites (minden karakter két bájt) Unicode kódolásra épül. Az Unicode jel elhelyezkedésétől függően 1–4 bájtot használ. Zökkenőmentes átmenetet biztosít az ASCII vagy ISO–8859-n alapú rendszerekből. Az egyes karakterek kódjai 8, 16 vagy 32-bites lehet. A 128 alatti kódú karakterek ábrázolása megegyezik az ISO–8859-n szerintivel, azaz teljesen megegyezik az ASCII-val.
Hexadecimális Decimális UTF–8 0000 0000-0000 007F 00000 0-00000 127 0xxxxxxx 0000 0080-0000 07FF 000 128-0000 2047 110xxxxx 10xxxxxx 0000 0800-0000 FFFF 00 2048-000 65535 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF 0 65536-0 1114111 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Az UTF–8 lefedi az U+0000 és U+10FFFF közötti tartományt, azaz összességében 1.114.111 karakter kódolható.
Egyértelműnek látszik, hogy az angol nyelvet használók számára nem jelent nagyobb tárhely igényt a dokumentumok tárolására, de mindenki másnak igen. Tehát az ISO–8859-cel összehasonlítva mindenki más „rosszul jár”. A magyar nyelvben az ékezetes betűk gyakoriságának függvényében 10-15% körüli terület növekedés határolható be.
Mindazonáltal, hogy az UTF–8-nak vannak hátrányai a korábbi kódolási rendszerekhez képest, be kell látni, hogy napjainkban sokkal inkább élvezhetőek előnyei. Az internetet böngészve többnyelvű szövegekkel találkozni azonos oldalon belül. Távolabbi országokba elektronikus levelet küldve nem kell aggódni, hogy nem tudják elolvasni. Megjelenhettek az ékezetes domain nevek. Nyelvi szótárak, fordítók számára nem jelent gondot a karakterkódolás. Sok különleges írásjel (matematikai, mértani, műszaki, zenei…) helyettesítésére nem kell képfájlokat illesztgetni a dokumentumokba.
Dokumentumok írása közben gyakran van szükség speciális karakterek bevitelére, mint pl.: matematikai írásjelek, stb. vagy csupán helyes tipográfiai szöveget szeretnénk látni.
Mivel lehetetlen lenne a létező karakterekre alkalmas billentyűzetet készíteni, a mai Linux, Mac OS X és Windows operációs rendszerek billentyű kombinációk és a hexadecimális kód beírásával támogatják az Unicode karakterek bevitelét. A fejlettebb grafikus szerkesztő programok felajánlják a kiválasztható „szimbólumok” beszúrásának lehetőségét. A karakterkódok és egyéb beviteli módszerek az operációs rendszer karaktertáblájából tudhatóak meg.
| Beviteli billentyű kombinációk: | |
| Windows | Hexadecimális kód majd Alt+X |
| Linux | Ctrl+Shift+U majd hexadecimális kód |
| Példák: | ||
| Név | Kód | írásjel |
|---|---|---|
| kávé | 2615 | ☕ |
| bekarikázott H | 24BD | Ⓗ |
| idézőjel kezdő | 201E | „ |
| idézőjel záró | 201D | ” |
| másodlagos idézőjel kezdő | 00BB | » |
| másodlagos idézőjel záró | 00AB | « |
| gondolatjel | 2013 | – |
| három pont | 2026 | … |
| csere karakter | FFFD | � |
A kívánt írásjel megjelenítésére nem elegendő ismerni a hozzá tartozó Unicode kódot, a használt betűkészletnek is tartalmaznia kell. Így az is meglehet, hogy böngészője nem tudja megjeleníteni mindenik kódolt karaktert az előbbi táblázatból. (Ennek az oldalnak verdana, helvetica, arial, sans-serif betűkészletek lettek megadva.)
Ezt a beviteli módszert a mai operációs rendszerek, szerkesztő programok közel azonos módon támogatják, azonban a nagyobb terjedelmű munkákat a „másolás és beillesztés (copy & paste)” módszer nagy mértékben hátráltatja, fáradtságossá teszi. Mindez kikerülhető, pl.: a célnak összeállított billentyűzetkiterjesztés létrehozásával. A legtöbb esetben a kezdeti többlet energia befektetésével, később rengeteg időveszteség, felesleges fáradozás megspórolható.
A Unicode 1992 megjelenése óta hosszú idő telt el, ennek ellenére most is vannak (megmaradtak) olyan programok amelyek nem kezelik az UTF–8-at. Az érvényes Unicode karaktertáblák a http://www.unicode.org/charts/ oldalon találhatóak.
Amennyiben fontos a többnyelvűség, a létrehozott HTML vagy egyéb internetes dokumentumokat UTF–8 kódolással célszerű elmenteni. Komolyabb szerkesztő programoknál be lehet állítani alapértelmezettként is az UTF–8-at. Egyszerűbb szöveges szerkesztőknél mentéskor lehet kiválasztani a fájl karakterkódolását. Az egyes dokumentumok karakterkódolásáról informálni kell a látogató böngészőjét, különben mint már volt említve, általában az alapértelmezett ISO–8859-1 kódolással jeleníti meg.
<head> … <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> … </head>
<?xml version="1.0" encoding="UTF-8" ?> …
<?php
header("Content-Type: text/html; charset=UTF-8");
…
?>… AddDefaultCharset UTF-8 …
AddDefaultCharset UTF-8
Megjegyzés: A karakterkészlet és karakterkódolás terminológiája logikai értelmezés szerint különböző, a valóságban egy bizonyos félreértés miatt egybemosódik.
A legtöbb tárhelyszolgáltató UNIX (Linux) alapú szervert működtet, éppen ezért érdemes minél jobban megismerni. Jól működő weboldalak elengedhetetlen kelléke, a fejlesztőgépen való tesztelés lehetősége, asztali…
A teszt szerver kialakítása cikk alapján, remélhetőleg egy működő HTTP kiszolgáló rendszert hoztunk létre. A rendszer, ugyan működik, de sok mindenre ebben a formában még nem alkalmas, nehezen kezelhető. Gondoljunk csak…
A phpMyAdmin, MySQL adatbázisok internetes menedzselésére PHP nyelven írt grafikus felületű eszköz, mely támogatja a leggyakrabban használt adatbázis műveleteket: adatbázisok kezelése, táblázatok, mezők, kapcsolatok, indexek,…
Amint egy bármilyen számítógép internetes hálózatra kapcsolódik mindig fenn áll a veszélye, hogy valaki(k) adatokat próbálnak megszerezni, vagy még ezen is túl, megszerezni a számítógép irányítását. Példának okáért az…
A webszerverek különböző sorszámú kódokat küldenek a HTTP munkameneteknek, amelyek naplózási adatokból visszakövethetőek és biztonságtechnikailag felhasználhatóak. Egy részük a fellépő hibákra utalnak, míg más részük a…
Bármely web-oldal életképességének sikere megköveteli a folyamatosan változó látogatói tendenciák követését, a kliensektől érkező információk olyan elemzését, amely konstruktívabb következtetések levonására képeznek…