„Karakterkódolás” változatai közötti eltérés

Innen: HamWiki
Ugrás a navigációhoz Ugrás a kereséshez
(karakterkódolások felhasználási területe)
18. sor: 18. sor:
  
 
A kiterjesztett karakterkészlet a 8 bites számítástechnika kínálta 1 bitnyi lehetőség kihasználása volt. Segítségével az adott nyelv karakterei ábrázolhatóvá váltak. Később minden nyelv saját kódlapot alakított ki. Ilyen volt magyar nyelvre a CP852.
 
A kiterjesztett karakterkészlet a 8 bites számítástechnika kínálta 1 bitnyi lehetőség kihasználása volt. Segítségével az adott nyelv karakterei ábrázolhatóvá váltak. Később minden nyelv saját kódlapot alakított ki. Ilyen volt magyar nyelvre a CP852.
 +
 +
{| border="1" align="center"
 +
| '''Kódolás''' || '''Nyelvi környezet
 +
|-
 +
| cp437 || USA, Kanada
 +
|-
 +
| cp737 || Görög
 +
|-
 +
| cp775 || Baltic Rim
 +
|-
 +
| cp850 || Európa (nyugat)
 +
|-
 +
| cp852 || Közép/Kelet-Európa
 +
|-
 +
| cp855 || Cirill
 +
|-
 +
| cp857 || Török
 +
|-
 +
| cp860 || Portugál
 +
|-
 +
| cp861 || Izland
 +
|-
 +
| cp862 || Héber
 +
|-
 +
| cp863 || Kanadai francia
 +
|-
 +
| cp864 || Arab
 +
|-
 +
| cp865 || Norvég, dán
 +
|-
 +
| cp866 || Cirill/orosz
 +
|-
 +
| cp869 || Görög
 +
|-
 +
| cp936 || Egyszerűsített kínai
 +
|-
 +
| cp949 || Kóreai
 +
|-
 +
| cp874 || Thai
 +
|-
 +
| cp1255|| Héber
 +
|-
 +
| Windows CP1250 || Szláv/közép-európai nyelvekre
 +
|-
 +
| Windows CP1251 || Bolgár, belorusz
 +
|}
 +
  
 
Az ábrán az alapértelmezett amerikai kibővített karakterkészlet látható.
 
Az ábrán az alapértelmezett amerikai kibővített karakterkészlet látható.
26. sor: 73. sor:
  
 
Így az ISO-8859 karakterkészlet alvariánsokra szakadt. Magyar nyelvre az ISO-8859-2 alvariáns felel meg.
 
Így az ISO-8859 karakterkészlet alvariánsokra szakadt. Magyar nyelvre az ISO-8859-2 alvariáns felel meg.
 +
 +
{| border="1" align="center"
 +
| colspan="2" align="center" | '''Kódolás''' || '''Megjegyzés'''
 +
|-
 +
| ISO 8859-1 || Latin 1 || Nyugat-Európa
 +
|-
 +
| ISO 8859-2 || Latin 2 || Szláv/Közép-Európa
 +
|-
 +
| ISO 8859-3 || Latin 3 || Eszperantó, Galician, máltai, török
 +
|-
 +
| ISO 8859-4 || Latin 4 || old Baltic
 +
|-
 +
| ISO 8859-5 || Cyrill
 +
|-
 +
| ISO 8859-6 || Arab
 +
|-
 +
| ISO 8859-7 || Modern görög
 +
|-
 +
| ISO 8859-8 || Héber
 +
|-
 +
| ISO 8859-9 || Latin 5 || török
 +
|-
 +
| ISO 8859-13 || Latin 7 || Baltic
 +
|-
 +
| ISO 8859-14 || Latin 8 || Celtic
 +
|-
 +
| ISO 8859-15 || Latin 9 || Nyugat-európai az Euro szimbólummal
 +
|}
  
 
== Unicode és az UTF-8 ==
 
== Unicode és az UTF-8 ==
  
A Unicode az ASCII 7 bites, illetve az ISO-8859-x adott nyelvre adoptált újabb 128 karaktere helyett 16 biten ábrázolja a karakterkészletet. Ez azt jelenti, hogy az ASCII 128 (0..127) karaktere további 65408 betűvel lett kiegészítve.
+
Az internet előretörésével egyre erősebb lett arra az igény, hogy a fenti sok-sok karakterkódolás helyett egyetlen univerzális karakterkódolást alkalmazzanak. Az előző szavak angol megfelelőjéből képzett mozaikszóvan, unicode-nak nevezték el. Az unicode múltja 1987-re tekint vissza, és 1992 júniusában jelent meg az 1.0-ás verziója.
 +
 
 +
A Unicode az ASCII 7 bites, illetve az ISO-8859-x adott nyelvre adoptált újabb 128 karaktere helyett 16 biten ábrázolja a karakterkészletet. Ez azt jelenti, hogy az ASCII 128 (0..127) karaktere további 65408 betűvel lett kiegészítve. Így lehetővé vált a különböző nyelvek karaktereinek egyetlen szöveges állományban való vegyes továbbítására.
  
 
A unicode karakterek a karakter képével együtt a http://www.unicode.org/charts/ oldalon található meg.
 
A unicode karakterek a karakter képével együtt a http://www.unicode.org/charts/ oldalon található meg.
  
 
''Megjegyzés:'' HTML-be karakterkódolástól függetlenül az &#SZÁM; szintaktikával tetszóleges Unicode karakter beilleszthető.
 
''Megjegyzés:'' HTML-be karakterkódolástól függetlenül az &#SZÁM; szintaktikával tetszóleges Unicode karakter beilleszthető.
 +
 +
Hátránya, hogy 2 byte-ot használ fel egyetlen karakter ábrázolására, ami miatt egy újabb trükkel való ötvözése kellett az elterjedéséhez.
  
 
== Az UTF-8 kódolás ==
 
== Az UTF-8 kódolás ==
  
Az UTF-8 a ''8-bit Unicode Transformation Format'' (8 bites Unicode átalakítási formátum). Feladata, hogy az előzőekben ismertetett 16 bites Unicode karakterkészletet változó hosszúságban átvigye.
+
Az UTF-8 története 1992 szeptemberére nyúlik vissza. Ekkor lett először alkalmazva a ''Plan 9'' operációs rendszerben, majd 1993 januárjában lett szélesebb körben ismertetve.
 +
 
 +
Az UTF-8 a ''8-bit Unicode Transformation Format'' (8 bites Unicode átalakítási formátum). Feladata, hogy az előzőekben ismertetett 16 bites Unicode karakterkészletet változó hosszúságban átvigye, azaz csak akkor használjon több byte-os kódot, ha olyan karaktert kívánunk átvinni, amely az ASCII kódtáblában nem szerepel.
  
 
Kepzeljük el azt az esetet, hogy 8-nál több bitet szeretnénk átvinni, azonban nem szeretnénk okvetlen 16 bites számot felhasználni. Ezt megtehetjük úgy is, hogy egy 8 bites szám felső 1-es bitjeinek száma a legelső 0-ig azt mutatja, hogy van még utána az egyesek számának megfelelő byte, ami ugyanennek a sok bites értéknek a bitjeit adja.
 
Kepzeljük el azt az esetet, hogy 8-nál több bitet szeretnénk átvinni, azonban nem szeretnénk okvetlen 16 bites számot felhasználni. Ezt megtehetjük úgy is, hogy egy 8 bites szám felső 1-es bitjeinek száma a legelső 0-ig azt mutatja, hogy van még utána az egyesek számának megfelelő byte, ami ugyanennek a sok bites értéknek a bitjeit adja.

A lap 2006. július 28., 15:12-kori változata

Napjainkban a betüket, számokat egyre inkább saját nyelvünkön, ékezetesen írva akarjuk látni. Sőt az utóbbi évtizedben az is igényként merült fel, hogy egyazon szöveges állomány több nyelv betűit is tartalmazhassa. Ezért érdekes kérdés a karakterkódolások összehasonlítása.

Az ugyanazon szövegben bármely nyelv alkalmazására csak a Unicode illetve az azt kódoló UTF-8 alapú rendszerek képesek. Ezért globalizálódó világunkban a jövő az UTF-8 kódolással átvitt Unicode karakterkészleté.

ASCII karakterek

Szabványos ASCII karakterei

Az ASCII az American Standard Code for Information Interchange (Amerikai szabvány kód az információcseréhez) talán a leg ismertebb karakter kódolás, a mai számítástechnikának az alapja.

Jellemzői:

  • Első negyede terminál vezérlő karakterekből áll. Lásd bekeretezett részt. Ilyen például a TAB (tabulátor) vagy CR (kocsivissza) és LF (újsor). Érdekes, hogy a Microsoft cég a sorvéget CRLF-el jelölte, a Unixok esetén az LF, mint sor vége terjedt el. Terminál esetén az ENTER gomb CR jelet küld.
  • 16-os számrendszerben szisztematikus felépítésű
  • Kisbetű, számok, minimalizált - írógépes világból származó - írásjelek.
  • Csak angol nyelvterület igényeit elégíti ki.
Kiterjesztett karakterkészlet

A kiterjesztett karakterkészlet a 8 bites számítástechnika kínálta 1 bitnyi lehetőség kihasználása volt. Segítségével az adott nyelv karakterei ábrázolhatóvá váltak. Később minden nyelv saját kódlapot alakított ki. Ilyen volt magyar nyelvre a CP852.

Kódolás Nyelvi környezet
cp437 USA, Kanada
cp737 Görög
cp775 Baltic Rim
cp850 Európa (nyugat)
cp852 Közép/Kelet-Európa
cp855 Cirill
cp857 Török
cp860 Portugál
cp861 Izland
cp862 Héber
cp863 Kanadai francia
cp864 Arab
cp865 Norvég, dán
cp866 Cirill/orosz
cp869 Görög
cp936 Egyszerűsített kínai
cp949 Kóreai
cp874 Thai
cp1255 Héber
Windows CP1250 Szláv/közép-európai nyelvekre
Windows CP1251 Bolgár, belorusz


Az ábrán az alapértelmezett amerikai kibővített karakterkészlet látható.

ISO-8859-x család

A következő komoly mérföldkő az ISO-8859-x karakter kódolás család, amelyben szabványosították a 128-255 közé eső karaktereket. Első körben Nyugat-Európára, majd rá kellett döbbenni, hogy a kelet-közép-európai tagállamoknak vannak még érdekes karakterei.

Így az ISO-8859 karakterkészlet alvariánsokra szakadt. Magyar nyelvre az ISO-8859-2 alvariáns felel meg.

Kódolás Megjegyzés
ISO 8859-1 Latin 1 Nyugat-Európa
ISO 8859-2 Latin 2 Szláv/Közép-Európa
ISO 8859-3 Latin 3 Eszperantó, Galician, máltai, török
ISO 8859-4 Latin 4 old Baltic
ISO 8859-5 Cyrill
ISO 8859-6 Arab
ISO 8859-7 Modern görög
ISO 8859-8 Héber
ISO 8859-9 Latin 5 török
ISO 8859-13 Latin 7 Baltic
ISO 8859-14 Latin 8 Celtic
ISO 8859-15 Latin 9 Nyugat-európai az Euro szimbólummal

Unicode és az UTF-8

Az internet előretörésével egyre erősebb lett arra az igény, hogy a fenti sok-sok karakterkódolás helyett egyetlen univerzális karakterkódolást alkalmazzanak. Az előző szavak angol megfelelőjéből képzett mozaikszóvan, unicode-nak nevezték el. Az unicode múltja 1987-re tekint vissza, és 1992 júniusában jelent meg az 1.0-ás verziója.

A Unicode az ASCII 7 bites, illetve az ISO-8859-x adott nyelvre adoptált újabb 128 karaktere helyett 16 biten ábrázolja a karakterkészletet. Ez azt jelenti, hogy az ASCII 128 (0..127) karaktere további 65408 betűvel lett kiegészítve. Így lehetővé vált a különböző nyelvek karaktereinek egyetlen szöveges állományban való vegyes továbbítására.

A unicode karakterek a karakter képével együtt a http://www.unicode.org/charts/ oldalon található meg.

Megjegyzés: HTML-be karakterkódolástól függetlenül az &#SZÁM; szintaktikával tetszóleges Unicode karakter beilleszthető.

Hátránya, hogy 2 byte-ot használ fel egyetlen karakter ábrázolására, ami miatt egy újabb trükkel való ötvözése kellett az elterjedéséhez.

Az UTF-8 kódolás

Az UTF-8 története 1992 szeptemberére nyúlik vissza. Ekkor lett először alkalmazva a Plan 9 operációs rendszerben, majd 1993 januárjában lett szélesebb körben ismertetve.

Az UTF-8 a 8-bit Unicode Transformation Format (8 bites Unicode átalakítási formátum). Feladata, hogy az előzőekben ismertetett 16 bites Unicode karakterkészletet változó hosszúságban átvigye, azaz csak akkor használjon több byte-os kódot, ha olyan karaktert kívánunk átvinni, amely az ASCII kódtáblában nem szerepel.

Kepzeljük el azt az esetet, hogy 8-nál több bitet szeretnénk átvinni, azonban nem szeretnénk okvetlen 16 bites számot felhasználni. Ezt megtehetjük úgy is, hogy egy 8 bites szám felső 1-es bitjeinek száma a legelső 0-ig azt mutatja, hogy van még utána az egyesek számának megfelelő byte, ami ugyanennek a sok bites értéknek a bitjeit adja.

Alább az x-ek jelzik az összerakható biteket, a többi a fix értékű biteket. Ezek szerint:

Byte-ok: Felső Középső Alsó
Bitenkénti kinézete: 110x xxxx 10xx xxxx 0xxx xxxx
Ennyi bit többletet ad: 5 6 7
Összes hasznos bit: 18 13 7

A gyakorlatban a 16 bites Unicodot választották a karakter elrendezés alapjának, amely 65536 különböző karakter megjelenítésére képes az ASCII szabvanyos 128 (0...0x7F) illetve az ISO8859-2 256 karakterével szemben.

Ez azt is jelenti, hogy a 7 bites (0..0x7F) ASCII átviteléhez továbbra is elegendő az 1 byte-os 0xxx xxxx forma. Ez alapvető tervezési szempont volt. Azonban ha 127 feletti értéket szeretnénk átvinni, pontosabban a 128 és 8191 (0x80..0x1FFF) közöttit, akkor ezt 2 byte felhasználásával tudjuk megtenni.

Ugyanis ekkor az információ az alábbiak szerint helyezkedik el:

Felső byte Alsó byte
10xx xxxx 0xxx xxxx

A fenti ábrában az x-ek a hasznos bitek.

8192-65535-ig (0x1FFF-0xFFFF) pedig 3 byte-ba kódolt karakterek következnek. Érdekességképp ilyen 3 byte-os a magyar also 99 ( „ ) és a felso 99 ( ” ) alakú idezőjel is. A Unicode táblában a 8222 illetve 8221 számértéket viseli. Mindeközben a számítástechnikai macskaköröm ( " ) mindössze 1 byte-os, mert az eredeti ASCII kódkészlet tartozéka.

Ne felejtsük el, hogy a statisztika szerint a legtöbbet az angol ABC betűit használjuk, és csak sokkal ritkábban használjuk a több byte-ot foglaló ékezeteket illetve speciális karaktereket. Ezáltal végeredményként byte-okat spórolunk meg az átvitt illetve tárolt szövegben, miközben bármely nyelv karakterkészletéből lehetőségünk nyílik karaktert beilleszteni a szövegbe.

Az UTF-8 felhasználása

Az UTF-8 előnyös tulajdonsága miatt a jövőben várhatólag mindenhol UTF-8 kódolással fogunk találkozni. Ezáltal a klasszikus TXT fájl is UTF-8 alapú lesz, a fájlnevek is UTF-8 alapon lesznek kódolva, továbbá a terminálkapcsolatok esetén is az UTF-8 karakterkódolás fogja biztosítani, hogy bármely nyelvű szimbólum átvihető, megjeleníthető legyen.

Napjainkban a Unix rendszerek egyre inkább UTF-8 kódolásra térnek át, a Microsoft Windows-XP -től felfelé is az UTF-8 előretörése figyelhető meg. Ezért gyakorlatilag ISO-8859-2 -ben már hosszabb távon nem érdemes gondolkodni.

Karakterkódolások közötti konverzió

ISO-8859-2 -es terminálon UTF-8 karakterek (és fordítva) az ékezetes karakterek helyett ákom-bákom jelenik meg. A POSIX rendszereknél (Linux, BSD, Solaris, stb.) az iconv nevű programmal konvertálhatunk a leg egyszerűbben. Egy példa állománynevek ISO-8859-2 -ről UTF-8-ba konvertálásra:

<HIGHLIGHTSYNTAX language="bash">for i in *.txt; do mv $i `echo "$i" | iconv -f iso8859-2 -t utf-8` done</HIGHLIGHTSYNTAX>

POSIX rendszerek esetén a terminál átkapcsolása UTF-8 kódolásról például ISO8859-2-re: LC_CTYPE környezeti változó értékét változtassuk át hu_HU.utf8 -ról hu_HU-ra. Például xterm indításához:

<HIGHLIGHTSYNTAX language="bash">LC_CTYPE=hu_HU xterm</HIGHLIGHTSYNTAX>

És az így elindított xterm ISO8859-2 karakterkódolással és annak korlátaival fog rendelkezni, ezáltal a visszafelé kompatibilis biztosítható, amely a régi vagy Windows alól szerkesztett szövegállományokhoz jöhet jól, amit még onnan is akarnak olvasni.