User Tools

Site Tools


tanszek:oktatas:szamitastechnika:karakterkodolas

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:szamitastechnika:karakterkodolas [2026/09/30 17:40] – [Gyakorlati karakterkódolási problémák] kneheztanszek:oktatas:szamitastechnika:karakterkodolas [2026/10/01 15:17] (current) – [3. ASCII: egy közösen elfogadott kódtáblázat] knehez
Line 1: Line 1:
 ===== Karakterkódolás ===== ===== Karakterkódolás =====
  
-A számítógép minden adatot bitek formájában tárol. Ez a szövegekre is igaz: a betűket, számjegyeket, írásjeleket és egyéb jeleket tároláskor számsorozattá kell alakítani. A **karakterkódolás** szabályai határozzák meg, hogyan lesz a karakterekből bájtsorozat, és hogyan állítható vissza abból a szöveg.+Amikor leírjuk azt, hogy ''motor'', betűket látunk a képernyőn. A számítógép azonban a szöveget is bitek formájában tárolja. Hogyan lehet betűket nullákkal és egyesekkel leírni? Ehhez először számokat rendelünk a betűkhöz, majd meghatározzuk e számok tárolásának módját.
  
-Mérnöki munkában karakterkódolással találkozhatunk például mérési eredmények exportálásakor, CSV-fájlok megnyitásakor, műszerek adatainak feldolgozásakor vagy műszaki dokumentumok átvitelekor. Ha az író és az olvasó program eltérő kódolást feltételez, a magyar ékezetek és a műszaki jelek hibásan jelenhetnek meg.+Ebben a fejezetben megvizsgáljuk, hogyan működik ez a megfeleltetés, miért van többféle karakterkódolás, és mitől romolhatnak el az ékezetek egy fájl megnyitásakor.
  
-==== Karakter, kódpont és bájt ====+==== 1. Hogyan lesz a betűből szám? ====
  
-A kódolás megértéséhez három fogalmat különböztetünk meg:+A szövegben szereplő betűket, számjegyeket, írásjeleket és egyéb jeleket összefoglalóan **karaktereknek** nevezzük. Az ''A'', a ''7'' és a ''?'' egyaránt karakter. A szóköz is karakter, bár nem rajzolódik ki látható jelként.
  
-^ Fogalom ^ Jelentés ^ Példa ^ +Készítsünk egy nagyon egyszerű, **kitalált kódtáblázatot**! Állapodjunk meg abban, hogy három betűnek a következő számokat feleltetjük meg:
-| **Karakter** | A szöveg egyik jele. | Az ''ó'' betű. | +
-| **Unicode-kódpont** | A Unicode rendszerében a karakterhez rendelt számazonosító. | ''U+00F3'' | +
-| **Kódolt bájtsorozat** | A karakter tárolási alakja egy adott kódolásban. | UTF-8 esetén ''C3 B3''. |+
  
-A táblázatban a kódpont és a bájtok értékei **hexadecimális**, azaz tizenhatos számrendszerben szerepelnek. Az ''U+'' jelölés Unicode-kódpontra utal; nem része a fájlban tárolt szövegnek.+^ Betű ^ Hozzárendelt szám ^ 
 +| A | 1 | 
 +| B | 2 | 
 +| C | 3 |
  
-Egy **bájt 8 bitből áll**, ezért 256 különböző értéket vehet fel. Egy karakter tárolásához azonban nem feltétlenül elegendő egyetlen bájt.+Ezzel a táblázattal az ''ABA'' szöveget az ''1, 2, 1'' számsorozattal írhatjuk le. Aki ismeri a táblázatot, a számsorozatból vissza tudja állítani az eredeti betűket.
  
-**A karakterek száma és a tároláshoz szükséges bájtok száma nem feltétlenül egyezik meg.**+Mi történne, ha a fogadó fél egy másik táblázatot használna, amelyben az 1 a B betűt, a 2 pedig az A betűt jelenti? Ugyanabból az ''1, 2, 1'' sorozatból a ''BAB'' szöveget olvasná ki.
  
-==== ASCII és a régi kódlapok ====+**Az adó és a fogadó félnek ugyanazokat a kódolási szabályokat kell használnia.** Ez a valódi szövegfájlok kezelésére is igaz.
  
-=== ASCII ===+==== 2. Hogyan tároljuk a hozzárendelt számokat? ====
  
-Az **ASCII** (American Standard Code for Information Interchange) egy **7 bites** karakterkód. A 7 bit összesen **128 különböző kódértéket** tesz lehetővé.+A számítógép a számokat kettes számrendszerben, nullák és egyesek sorozataként tárolja. Egy ilyen számjegy a **bit**. Nyolc bit együtt egy **bájt**.
  
-Az ASCII tartalmazza:+Nyolc biten 256 különböző érték különböztethető meg. Ha ezeket előjel nélküli egész számként értelmezzük, a lehetséges értékek 0-tól 255-ig terjednek.
  
-  * az angol ábécé 26 nagybetűjét és 26 kisbetűjét; +Az előbbi kitalált példában tároljunk minden betűkódot egy bájton:
-  * a tíz számjegyet; +
-  * írásjeleket és néhány műveleti jelet; +
-  * a szóközt és a vezérlőkaraktereket.+
  
-A **vezérlőkarakterek** nem megjelenítendő betűket jelölnek. Ilyen például a tabulátor, a soremelés (LF) és a kocsi-vissza (CR). Szövegfájlokban a sor végét egyes rendszerek LF-fel, mások CR és LF egymás utáni használatával jelölik. Ez a különbség nem azonos a karakterkódolások eltérésével.+^ Betű ^ Hozzárendelt szám ^ A szám nyolc biten ^ 
 +| A | 1 | ''00000001'' | 
 +| B | 2 | ''00000010'' | 
 +| C | 3 | ''00000011'' |
  
-^ Karakter ^ Decimális ASCII-kód ^ Hexadecimális ASCII-kód ^ +Az ''ABA'' szöveg így három bájtot foglal: az első bájt az 1-et, a második a 2-t, a harmadik ismét az 1-et tárolja.
-| Szóköz | 32 | ''20'' | +
-| 0 | 48 | ''30'' | +
-| A | 65 | ''41'' | +
-| a | 97 | ''61'' |+
  
-Az ASCII önmagában nem tartalmazza a magyar ékezetes betűket. Például az ''ő'' és az ''ű'' nem ábrázolható vele.+Ezzel már egy teljes tárolási szabályt adtunk meg: megmondtuk, melyik betűhöz milyen szám tartozik, és azt is, hogy egy számot hány biten tárolunk.
  
-//Megjegyzés:// Bár az ASCII 7 bites kód, a gyakorlatban rendszerint bájtonként tároljuk a karaktereit; a bájt legfelső bitje ekkor 0.+A **karakterkódolás** meghatározza, hogyan alakítjuk a szöveg karaktereit tárolható bájtsorozattá. A visszaalakítást **dekódolásnak** nevezzük.
  
-=== Nyelvfüggő kódlapok ===+A saját táblázatunk csak szemléltetésre szolgál. A gyakorlatban közösen elfogadott, szabványos kódolásokat használunk, hogy a különböző programok és számítógépek értelmezni tudják egymás szövegeit.
  
-Az ékezetes betűk és további jelek tárolásához különböző **8 bites kódlapok** terjedtek el. Ezek egy bájton legfeljebb 256 különböző kódértéket tudnak megkülönböztetni. A következő kódlapok alsó 128 kódértéke az ASCII-val egyezik meg, a további kódértékek jelentése viszont eltérhet.+==== 3. ASCII: egy közösen elfogadott kódtáblázat ====
  
-^ Kódlap ^ Jellemző felhasználás ^ +Az egyik ilyen szabvány az **ASCII**. Teljes neve American Standard Code for Information Interchange. Az ASCII meghatározza, hogy az általa kezelt karakterekhez mely számok tartoznak.
-| IBM CP852 | Régi DOS-os, közép-európai szövegek; a magyar ékezetes betűket is tartalmazza. | +
-| Windows-1250 | Régebbi Windowsos, közép-európai szövegek. | +
-| ISO-8859-1 (Latin-1) | Elsősorban nyugat-európai nyelvek; az ''ő'' és az ''ű'' nincs benne. | +
-| ISO-8859-2 (Latin-2) | Közép- és kelet-európai nyelvek; a magyar ékezetes betűket is tartalmazza. |+
  
-**Ezek különböző kódlapok, nem ugyanannak a kódolásnak a nevei.** Ugyanaz a bájt az egyik kódlap szerint más karaktert jelenthet, mint egy másik szerint.+Például a nagy ''A'' betűhöz a **65**, a nagy ''B'' betűhöz a **66** számot rendeli. Ezeket az értékeket megállapodás rögzíti: nem a betű alakjából számítjuk ki őket.
  
-A programokban előforduló **ANSI** megnevezés nem egyetlen, egyértelműen meghatározott karakterkódolás neve. Windowsos környezetben többféle régi kódlapra is utalhat. Adatcserénél ezért célszerű pontos nevet megadni, például ''Windows-1250''.+^ Karakter ^ ASCII-kód tízes számrendszerben ^ Tárolása egy bájton ^ 
 +| A | 65 | ''01000001'' | 
 +| B | 66 | ''01000010'' | 
 +| a | 97 | ''01100001'' | 
 +| 0 | 48 | ''00110000'' | 
 +| Szóköz | 32 | ''00100000'' |
  
-==== Unicode: közös karakterkészlet ====+Az ''ABBA'' szöveg ASCII szerint a 65, 66, 66, 65 értékű bájtokkal tárolható. A kisbetű és a nagybetű külön karakter: ezért az ''A'' és az ''a'' kódja eltér.
  
-A nyelvenként eltérő kódlapok megnehezítették a többnyelvű szövegek kezelését. A **Unicode** célja, hogy közös rendszerben lehessen azonosítani a különböző írásrendszerek karaktereit, valamint a matematikai, műszaki és egyéb jeleket.+Az ASCII **128 kódértéket** használ, 0-tól 127-ig. Ennyi lehetőséghez 7 bit szükséges, mert 2 a hetediken 128. Ezért mondjuk, hogy az ASCII **7 bites kód**. A gyakorlatban rendszerint egy bájtot használunk egy ASCII-karakter tárolásához; ennek első, legnagyobb helyi értékű bitje 0.
  
-A Unicode sok mai és történeti írásrendszer jeleit tartalmazza, és folyamatosan bővül. Karakterkészletét és kódpontjait az **ISO/IEC 10646** szabvánnyal összehangoltan határozzák meg. A Unicode emellett a szövegkezeléshez szükséges további szabályokat is leír.+=== Mi fér bele az ASCII-ba? ===
  
-^ Karakter ^ Unicode-kódpont ^ Jelentés ^ +Az ASCII tartalmazza az angol ábécé nagy- és kisbetűit, a számjegyeket, írásjeleket, a szóközt és úgynevezett **vezérlőkaraktereket**. A vezérlőkarakterek nem betűként jelennek meg: például a szöveg sorokra tagolásában vagy tabulátorral történő elrendezésében van szerepük.
-| A | ''U+0041'' | Latin nagy A betű | +
-| ó | ''U+00F3'' | Latin kis o betű éles ékezettel | +
-| ő | ''U+0151'' | Latin kis o betű kettős éles ékezettel | +
-| ° | ''U+00B0'' | Fokjel | +
-| Ω | ''U+03A9'' | Görög nagy ómega | +
-| € | ''U+20AC'' | Eurójel |+
  
-A Unicode első 128 kódpontja, az ''U+0000''–''U+007F'' tartomány, az ASCII kódjainak felel meg.+A magyar ékezetes betűk viszont nem szerepelnek benne. Az ''alma'' leírható ASCII-val, az ''árvíz'' már nem.
  
-**A kódpont azonosítja a karaktert, de önmagában nem mondja meg, milyen bájtsorozat kerüljön a fájlba.** Ehhez konkrét kódolásra van szükség, például UTF-8-ra vagy UTF-16-ra.+A kódolás által kezelt karakterek összességét **karakterkészletnek** nevezzük.
  
-//Kiegészítés:// A Unicode kódponttartománya ''U+0000''–''U+10FFFF''. Az első, ''U+0000''–''U+FFFF'' közötti síkot **BMP**-nek (Basic Multilingual Plane) nevezzük. Nem minden kódponthoz tartozik karakter; egyes tartományok különleges célra vannak fenntartva.+==== 4. Hogyan kerültek be az ékezetes betűk? ====
  
-==== UTF-8 kódolás ====+Kézenfekvő megoldás volt a teljes bájt kihasználása: 7 bit helyett 8 bit használatával 128 helyett 256 kódérték áll rendelkezésre. A további helyekre ékezetes betűket és egyéb jeleket lehetett felvenni.
  
-Az **UTF-8** a Unicode-karakterek bájtokkal történő ábrázolásának egyik módja. **Változó hosszúságú kódolás:** egy kódolható Unicode-kódponthoz 1, 2, 3 vagy 4 bájtot rendel.+Az összes nyelv betűi azonban 256 helyre sem férnek el. Ezért különböző nyelvekhez és régiókhoz eltérő táblázatokat készítettek. Ezeket **kódlapoknak** nevezzük.
  
-Fontos tulajdonságai:+Például a **Windows-1250** közép-európai karaktereket, köztük magyar ékezetes betűket tartalmaz. A **Windows-1252** elsősorban nyugat-európai nyelvekhez készült.
  
-  * Az ASCII-karaktereket változatlan kóddal, **egy bájton** tárolja. +Nézzünk egy valódi eltérést:
-  * A magyar ékezetes betűk szokásos, önálló kódponttal megadott alakja **két bájtot** foglal. +
-  * Sok további jel, például az eurójel, **három bájtot** igényel. +
-  * Egyes további karakterek, például számos emoji alapkaraktere, **négy bájtot** igényelnek.+
  
-^ Karakter ^ Unicode-kódpont ^ UTF-8-bájtok hexadecimálisan ^ Hossz ^ +^ A fájlban tárolt bájt értéke ^ Windows-1250 szerint ^ Windows-1252 szerint ^ 
-| A | ''U+0041'' | ''41'' | 1 bájt | +| 245 | ő | õ |
-| ó | ''U+00F3'' | ''C3 B3'' | 2 bájt | +
-| ő | ''U+0151'' | ''C5 91'' | 2 bájt | +
-| Ω | ''U+03A9'' | ''CE A9'' | 2 bájt | +
-| € | ''U+20AC'' | ''E2 82 AC'' | 3 bájt |+
  
-**Példa:** a ''mérő'' szó négy betűből áll, de UTF-8-ban hat bájtot foglal:+Ha egy Windows-1250 szerint mentett fájlt Windows-1252 szerint olvasunk, az ''ő'' helyén ''õ'' jelenhet meg. **A tárolt szám nem változott meg; a hozzá rendelt karakter változott meg.**
  
-<code> +További régi kódlapnevekkel is találkozhatunk:
-Karakter:       m     é      r     ő +
-UTF-8 (hex):    6D    C3 A9  72    C5 91 +
-Bájtok száma:   1  +  2   +  1  +  2  = 6 +
-</code>+
  
-Ebben a számításban nincs sortörés vagy más kiegészítő jel a szöveg végén, és nincs BOM a fájl elején.+^ Név ^ Hol találkozhatunk vele? ^ 
 +| IBM CP852 | Régi DOS-os, közép-európai szövegekben. | 
 +| ISO-8859-1, más néven Latin-1 | Nyugat-európai szövegekben; az ''ő'' és az ''ű'' nincs benne. | 
 +| ISO-8859-2, más néven Latin-2 | Közép- és kelet-európai szövegekben; a magyar ékezetes betűket is tartalmazza. |
  
-//Megjegyzés:// Egy képernyőn egyetlen jelként látható elem több Unicode-kódpontból is állhat. Például egy ékezetes betű leírható alapbetű és külön ékezet kombinációjával is. Ezért a látható jelek, a kódpontok és a bájtok száma három különböző mennyiség lehet.+Ezek nevét nem szükséges bemagolni. A lényeg az, hogy **a kódlap neve határozza meg, melyik táblázat szerint értelmezzük a bájtokat**.
  
-=== Az UTF-8 bitmintái – kiegészítő magyarázat ===+Egyes programok az **ANSI** nevet használják egy régi Windowsos kódlap megjelölésére. Ez önmagában nem egyértelmű: a pontos kódlap környezettől függhet.
  
-Az UTF-8 bájtjainak elején található bitek jelzik a bájt szerepét. Az alábbi táblázatban az ''x'' helyekre a kódpont értékének bitjei kerülnek:+==== 5. Unicode: legyen közös azonosítójuk a karaktereknek! ====
  
-^ Teljes hossz ^ A bájtok bitmintája ^ +A kódlapokkal két probléma adódik. Egyrészt ugyanaz a szám különböző karaktereket jelenthet. Másrészt egyetlen ilyen kódlapba nem férnek bele a sokféle nyelv betűi és a műszaki jelek.
-| 1 bájt | ''0xxxxxxx'' | +
-| 2 bájt | ''110xxxxx 10xxxxxx'' | +
-| 3 bájt | ''1110xxxx 10xxxxxx 10xxxxxx'' | +
-| 4 bájt | ''11110xxx 10xxxxxx 10xxxxxx 10xxxxxx'' |+
  
-Többbájtos kódolás esetén az első bájt elején álló 1-esek száma a **teljes bájtsorozat hosszát** jelzi. A további, úgynevezett folytató bájtok mindig ''10'' bitekkel kezdődnek.+A **Unicode** olyan nemzetközi szabvány, amely közös rendszerben rendel számazonosítókat a karakterekhez. Tartalmazza számos mai és történeti írásrendszer betűit, valamint matematikai, műszaki és egyéb jeleket is.
  
-Az egyes kódpontokat a legrövidebb megengedett alakban kell kódolni. A táblázat szerkezeti vázlat: nem minden lehetséges ''x''-kitöltés alkot érvényes UTF-8-sorozatot.+Az alapgondolat egy nagy közös jegyzékhez hasonlítható: az ''A'', az ''ő'' és a görög ''Ω'' is saját azonosítót kap benne. Nem kell nyelvenként más táblázatra áttérni.
  
-=== Az ó betű kódolása ===+^ Karakter ^ Unicode-azonosító tízes számrendszerben ^ 
 +| A | 65 | 
 +| ó | 243 | 
 +| ő | 337 | 
 +| Ω | 937 | 
 +| € | 8364 |
  
-Az ''ó'' Unicode-kódpontja ''U+00F3'', amely decimálisan 243, binárisan ''11110011''.+A karakterhez rendelt ilyen azonosítót **kódpontnak** nevezzük. Például az ''ő'' betű kódpontjának értéke 337. Ez egy azonosító, nem a betű mérete és nem a tárolásához szükséges bájtok száma.
  
-Ez nem fér el a 7 bites ASCII-tartományban, ezért kétbájtos UTF-8-alak szükséges. A kétbájtos minta 5 + 6, összesen 11 adatbitnek biztosít helyet. A kódpont bináris alakját balról nullákkal 11 bitre egészítjük ki:+A Unicode megtartotta az ASCII karaktereinek számértékeit: ezért az ''A'' kódja itt is 65.
  
-<code> +=== Miért látunk betűket is a kódpontok leírásában? ===
-Kódpont 11 biten:      00011110011 +
-Felbontás 5 + 6 bitre: 00011 110011+
  
-UTF-8-minta:          110xxxxx 10xxxxxx +A szakmai leírások a kódpontokat rendszerint **tizenhatos, más néven hexadecimális számrendszerben** adják meg. Ez csupán a számok rövidebb leírásának módja.
-Adatbitek behelyettesítése: +
-                      11000011 10110011+
  
-Hexadecimálisan:      C3       B3 +Ebben a számrendszerben a 0–9 számjegyeken kívül az A, B, C, D, E és F jelet is használjuk. Ezek rendre a 10, 11, 12, 13, 14 és 15 értéket jelentik. A helyi értékek jobbról balra 1, 16, 256 és így tovább.
-</code>+
  
-Az ''ó'' betű UTF-8-kódja tehát a ''C3 B3'' bájtsorozat.+Például a hexadecimális ''F3'' értéke tízes számrendszerben: **15 × 16 + 3 = 243**.
  
-==== UTF-16 és BOM – rövid kitekintés ====+A Unicode-kódpontok szokásos jelölése ''U+'' előtaggal kezdődik, ezt követi a hexadecimális szám:
  
-Az **UTF-16** szintén Unicode-kódolás. Egy kódolható Unicode-kódpontot **egy vagy két 16 bites egységgel**, vagyis **2 vagy 4 bájttal** ábrázol. A magyar betűk szokásos, önálló kódponttal megadott alakja két bájtot foglal.+^ Karakter ^ Azonosító tízes számrendszerben ^ Ugyanaz a kódpont szokásos jelöléssel ^ 
 +| A | 65 | ''U+0041'' | 
 +| ó | 243 | ''U+00F3'' | 
 +| ő | 337 | ''U+0151'' |
  
-Mivel egy 16 bites egység két bájtból áll, meg kell határozni e bájtok sorrendjét:+A bevezető nullák a szám értékét nem változtatják meg. Az ''U+00F3'' tehát azt jelenti: **a 243 értékű Unicode-kódpont**. Az ''U+'' és az utána írt számjegyek magyarázó jelölések; nem ezeket a karaktereket mentjük el az ''ó'' helyett.
  
-  * **Big-endian:** a nagyobb helyi értékű bájt kerül előre. +==== 6. UTF-8: hogyan tároljuk a Unicode-karaktereket? ====
-  * **Little-endian:** a kisebb helyi értékű bájt kerül előre.+
  
-Például az ''A'' kódpontja ''U+0041''. UTF-16BE esetén bájtjai ''00 41'', UTF-16LE esetén ''41 00''.+A közös azonosítók bevezetésével még nem oldottunk meg mindent. Az ''ő'' azonosítója például 337, miközben egy bájtban csak 0 és 255 közötti egész szám tárolható. Meg kell tehát határoznunk, hogyan írjuk le a karaktereket egy vagy több bájttal.
  
-A fájl elején elhelyezett **BOM** (Byte Order Mark) segíthet a kódolás és a bájtsorrend felismerésében. A BOM a ''U+FEFF'' speciális kezdő jel kódolt alakja:+Erre szolgál például az **UTF-8**. Ez egy pontosan meghatározott szabályrendszer, amely a Unicode-kódpontokhoz tárolható bájtsorozatokat rendel.
  
-^ Kódolás ^ BOM-bájtok hexadecimálisan ^ +**A Unicode azt adja meg, melyik karakterről van szó. Az UTF-8 azt határozza meg, hogyan tároljuk azt bájtokkal.**
-| UTF-16, big-endian bájtsorrend | ''FE FF'' | +
-| UTF-16, little-endian bájtsorrend | ''FF FE'' | +
-| UTF-8 | ''EF BB BF'' |+
  
-**A BOM nem minden esetben kötelező.** A bájtsorrendet például a formátum vagy egy külön kódolásmegjelölés is meghatározhatja. UTF-8 esetén nincs bájtsorrend-választás: a BOM ott csak a kódolásra utaló jelzés lehet. A BOM-ot a szövegszerkesztők rendszerint nem jelenítik meg közönséges karakterként.+Az UTF-8 egy kódolható kódponthoz 1, 2, 3 vagy 4 bájtot rendel. Az ASCII-karaktereket egy bájton, eredeti számértékükkel tárolja. A többi karakterhez több bájtot használ. Az alábbi példákban minden betűt egyetlen Unicode-kódponttal írunk le.
  
-==== Gyakorlati karakterkódolási problémák ====+^ Karakter ^ Unicode-azonosító tízes számrendszerben ^ UTF-8-ban tárolt bájtok értékei, szintén tízes számrendszerben ^ Bájtok száma ^ 
 +| A | 65 | 65 | 1 | 
 +| ó | 243 | 195, 179 | 2 | 
 +| ő | 337 | 197, 145 | 2 | 
 +| € | 8364 | 226, 130, 172 | 3 |
  
-=== Miért romlanak el az ékezetek? ===+A táblázatban a vesszők a külön bájtokat választják el; nem részei a tárolt adatnak. Például az ''ó'' helyére két bájt kerül: az első értéke 195, a másodiké 179. A program a két bájtot együtt értelmezve állítja vissza az ''ó'' betűt.
  
-Ha a fájl UTF-8-ban készült, de az olvasó program más kódlap szerint értelmezi a bájtjait, hibás szöveg jelenhet meg.+**Miért kell két bájt az ó betűhöz, ha a 243 még elférne egy bájtban?** Mert az UTF-8 nem egyszerűen a kódpont számértékét írja egy bájtba. Az egybájtos alakot a 0–127 közötti ASCII-kódoknak tartja fenn; a többi karakter tárolására külön szabályt alkalmaz. Ennek bitenkénti működését később, kiegészítésként vezetjük le.
  
-Például az ''ó'' UTF-8-bájtjai ''C3 B3''. Ha ezt a két bájtot Windows-1252 szerint, két külön karakterként olvassuk, az eredmény ''ó'' lesz.+=== Hány bájt egy szó? ===
  
-**A fájlban lévő bájtok ekkor még lehetnek helyesek; a program rossz szabály szerint értelmezi őket.**+Nézzük a ''mérő'' szót! Az ''m'' és az ''r'' ASCII-karakter, ezért egy-egy bájtot foglal. Az ''é'' és az ''ő'' két-két bájtot igényel.
  
-Egy szövegfájl kódolása nem mindig állapítható meg biztosan pusztán a tartalmából. A ''.txt'' vagy ''.csv'' kiterjesztés önmagában nem határozza meg a karakterkódolást.+^ Betű ^ UTF-8-ban szükséges hely ^ 
 +| m | 1 bájt | 
 +| é | 2 bájt | 
 +| r | 1 bájt | 
 +| ő | 2 bájt | 
 +| **Összesen** | **6 bájt** |
  
-=== Mit tegyünk hibásan megjelenő szöveg esetén? ===+A szó tehát **4 betűből áll, de 6 bájtot foglal**. Itt csak a négy betű tárolási helyét számoltuk; nem adtunk hozzá sortörést vagy fájleleji jelzést.
  
-  - Őrizzük meg az eredeti fájlt. +//Kiegészítés:// A Unicode egyes ékezetes betűket alapbetű és külön ékezet egymás utáni megadásával is képes leírni. A képernyőn ez egyetlen betűként jelenhet meg, miközben két kódpont tartozik hozzá. A fejezet számítási példáiban az ékezetes betűk önálló kódpontos alakját használjuk.
-  - Ellenőrizzük, milyen kódolással exportálták vagy mentették. +
-  - A megnyitó programban válasszuk ki a megfelelő kódolást. +
-  - Csak a helyesen megjelenő szöveget alakítsuk át más kódolásra, ha ez szükséges.+
  
-**A más kódolással történő megnyitás és az átkódolás nem ugyanaz.** Megnyitáskor a meglévő bájtokat értelmezzük; átkódoláskor a felismert karakterekhez új bájtsorozatot hozunk létre.+==== 7. Mit jelent mindez a gyakorlatban? ====
  
-Ha például Unicode-szöveget olyan régi kódlapra mentünk, amely nem tartalmaz minden szükséges jelet, **információvesztés** történhet. A hiányzó jelek helyére kérdőjel vagy helyettesítő karakter kerülhet. Ez utólag pusztán a kódolás átállításával már nem feltétlenül javítható.+=== Miért jelenik meg hibás szöveg? ===
  
-=== Karakterkódolás vagy betűtípushiba? ===+Korábban láttuk, hogy két régi kódlap eltérően értelmezheti ugyanazt a bájtot. Hasonló hiba történhet akkor is, ha egy UTF-8-fájlt egy régi kódlap szerint nyitunk meg.
  
-A **karakterkódolás** azt határozza meg, hogyan értelmezzük a bájtokat. A **betűtípus** azt határozza meg, hogyan rajzoljuk ki a karaktereket.+Az ''ó'' UTF-8-bájtjai tízes számrendszerben 195 és 179. Ha a program Windows-1252 szerint olvassa ezeket, két külön karakternek tekinti őket: a 195 értékhez az ''Ã'', a 179 értékhez a ''³'' jelet rendeli. Így jelenik meg az ''ó'' helyén az ''ó'' szöveg.
  
-Ha értelmetlen betűsorok jelennek meg az ékezetek helyén, gyakran kódolási hiba történt. Ha egy jel helyén üres négyzet látható, előfordulhat, hogy a használt betűtípus nem tartalmazza az adott jel rajzolatát. A két problémát eltérően kell kezelni.+**A fájl adatai még lehetnek helyesek; a program rossz szabály szerint olvassa őket.**
  
-=== Mérnöki adatcsere ===+A ''.txt'' és a ''.csv'' fájlnév-végződés önmagában nem árulja el a kódolást. A program néha megpróbálja felismerni azt, de a felismerés nem mindig biztos.
  
-Mérési adatokat tartalmazó CSV-fájlnál külön kell megadni vagy ellenőrizni:+=== Megnyitás és átkódolás ===
  
-  * a **karakterkódolást**, például UTF-8; +Hibás ékezetek esetén először őrizzük meg az eredeti fájlt, és próbáljuk meg a készítésekor használt kódolással megnyitni.
-  * az **oszlopelválasztót**, például pontosvessző vagy vessző; +
-  * a **tizedesjelet**, például vessző vagy pont.+
  
-Ezek különböző beállítások. A helyes kódolás önmagában nem oldja meg a rosszul felismert oszlopelválasztó problémáját.+  * **Más kódolással történő megnyitáskor** ugyanazokat a bájtokat értelmezzük más szabály szerint. A fájl tartalmát ettől még nem írjuk át. 
 +  * **Átkódoláskor** a már helyesen felismert szövegből más kódolású bájtsorozatot hozunk létre és mentünk el.
  
-Például egy műszer ''Hőmérséklet [°C]'' nevű oszlopának megnyitásakor az ékezetekhez és a fokjelhez megfelelő karakterkódolás szükséges.+Például egy Windows-1250-fájl UTF-8-ra alakításakor az ''ő'' egyetlen, 245 értékű bájtja helyett két bájt, 197 és 145 kerül az új fájlba. A betű ugyanaz marad, csak a tárolása változik.
  
-Új szöveges adatcsere kialakításakor célszerű az UTF-8-at választani, amennyiben a részt vevő rendszerek támogatják. A kódolást az adatcsere leírásában is rögzíteni kell.+Ha a helytelenül megjelenített szöveget mentjük újra, a hibát is elmenthetjük. Ha pedig olyan kódlapot választunk, amelyből egy szükséges karakter hiányzik, a program például kérdőjellel helyettesítheti azt. Ez már információvesztést okozhat.
  
-==== Base64 – bináris adatok szöveges ábrázolása ====+=== Mérési adatok megnyitása ===
  
-A **Base64 nem karakterkódolás** az ASCII vagy az UTF-8 értelmében. Feladata, hogy egy tetszőleges bájtsorozatot korlátozott készletből választott, nyomtatható karakterek sorozataként ábrázoljon.+A **CSV** olyan szöveges fájlformátum, amely táblázatos adatokat tárol: a sorokon belüli mezőket például vessző vagy pontosvessző választja el. Egy mérési eredményeket tartalmazó fájlban ilyen oszlopnév is szerepelhet: ''Hőmérséklet [°C]''.
  
-Így például kép, tömörített fájl vagy más bináris adat is továbbítható olyan környezetben, amely szöveges adatot vár. Ismert alkalmazása az e-mail-mellékletek átvitele. A levelezésben használt **MIME** kiterjesztések egyik átviteli kódolása a Base64. Történetileg ezt a megoldást a levelezőrendszerek 7 bites korlátai is indokolták.+A fájl beolvasásakor három külön beállításra lehet szükség:
  
-**A Base64 nem titkosítás:** az eredeti adat titkos kulcs nélkül visszaállítható. **Nem is tömörítés:** a kódolt adat általában nagyobb lesz az eredetinél.+  * **Karakterkódolás:** hogyan értelmezze a program a betűket és egyéb jeleket? 
 +  * **Mezőelválasztó:** melyik jel választja szét az oszlopok adatait? 
 +  * **Tizedesjel:** pont vagy vessző választja el a szám egész és tört részét?
  
-=== A kódolás elve ===+A hibás ékezet és az egy oszlopba összecsúszott táblázat tehát nem ugyanaz a probléma.
  
-A Base64 a bemeneti adat bitjeit **6 bites csoportokra** osztja. Hat bit 64 különböző értéket vehet fel, ezért 64 különböző adatjelre van szükség:+=== A betűtípus szerepe ===
  
-^ Érték ^ Hozzárendelt karakterek ^+A karakterkódolás mellett a megjelenítésnek is helyesen kell működnie. A **betűtípus** adja meg a jelek kirajzolható alakját. Előfordulhat, hogy a program helyesen azonosít egy karaktert, de a választott betűtípusban nincs hozzá rajzolat. Ekkor például üres négyzet jelenhet meg. 
 + 
 +Az értelmetlen ékezetes betűsor gyakran kódolási problémára, a hiányzó jel helyén álló négyzet pedig megjelenítési problémára utalhat. 
 + 
 +==== 8. Kiegészítés: hogyan készül az UTF-8-bájtsorozat? ==== 
 + 
 +Az UTF-8 bájtjai nemcsak a kódpont bitjeit tartalmazzák. Bizonyos bitek azt jelzik, hogy egyetlen bájtról, több bájtból álló sorozat kezdetéről vagy annak folytatásáról van-e szó. 
 + 
 +A következő táblázatban a leírt 0-k és 1-ek rögzített **jelzőbitek**. Az ''x'' helyekre a kódpont számértékének bitjei kerülnek: 
 + 
 +^ Teljes hossz ^ Bitminta ^ 
 +| 1 bájt | ''0xxxxxxx'' | 
 +| 2 bájt | ''110xxxxx 10xxxxxx'' | 
 +| 3 bájt | ''1110xxxx 10xxxxxx 10xxxxxx'' | 
 +| 4 bájt | ''11110xxx 10xxxxxx 10xxxxxx 10xxxxxx'' | 
 + 
 +Például a ''110'' kezdet azt jelzi, hogy összesen két bájt tartozik össze. A második bájt ''10'' kezdete azt mutatja, hogy ez egy sorozat folytatása. Ezt nevezzük **folytató bájtnak**. 
 + 
 +=== Az ó betű levezetése === 
 + 
 +Az ''ó'' kódpontja tízes számrendszerben 243. Kettes számrendszerben ez ''11110011'', mert 128 + 64 + 32 + 16 + 2 + 1 = 243. 
 + 
 +A 243 nagyobb 127-nél, ezért nem használhatjuk az egybájtos alakot. A kétbájtos mintában viszont 5 + 6 = 11 adatbitnek van helye, ami elegendő. A nyolc bit elé ezért három nullát írunk, majd az eredményt 5 és 6 bites részre bontjuk: 
 + 
 +<code> 
 +243 kettes számrendszerben: 11110011 
 +11 bitre kiegészítve:      00011110011 
 +Felbontás:                00011 110011 
 +</code> 
 + 
 +Ezután az első öt bit elé ''110'', a következő hat bit elé ''10'' kerül: 
 + 
 +<code> 
 +Első bájt:    110 + 00011  = 11000011 
 +Második bájt: 10  + 110011 = 10110011 
 +</code> 
 + 
 +Az első bájt értéke 195, a másodiké 179. Így kaptuk meg a korábbi táblázatban szereplő két számot. 
 + 
 +Hexadecimálisan 195 = ''C3'', 179 = ''B3'', ezért ugyanez a bájtsorozat röviden **C3 B3** alakban írható. Egy bájtot két hexadecimális számjeggyel tudunk megadni. 
 + 
 +**A U+00F3 és a C3 B3 két különböző dolgot jelöl:** az első az ''ó'' Unicode-azonosítója, a második az UTF-8-ban tárolandó két bájt értéke. 
 + 
 +//Megjegyzés:// A táblázat a szerkezetet mutatja. Az UTF-8 további érvényességi szabályokat is meghatároz; például minden kódpontot a legrövidebb megengedett alakjával kell kódolni. 
 + 
 +==== 9. Kiegészítés: UTF-16 és a fájl eleji jelzés ==== 
 + 
 +Ugyanazokat a Unicode-karaktereket az UTF-8-tól eltérő módon is lehet tárolni. Ilyen kódolás az **UTF-16**, amely egy kódolható kódponthoz 2 vagy 4 bájtot használ. 
 + 
 +Az ''A'' betű UTF-16-ban két bájtot foglal. Az egyik bájt értéke 0, a másiké 65. A két bájt sorrendjében azonban meg kell állapodni: 
 + 
 +^ Sorrend neve ^ Az A tárolt bájtjai tízes számrendszerben ^ Magyarázat ^ 
 +| Big-endian | 0, 65 | A nagyobb helyi értékű bájt kerül előre. | 
 +| Little-endian | 65, 0 | A kisebb helyi értékű bájt kerül előre. | 
 + 
 +A két változat neve **UTF-16BE**, illetve **UTF-16LE**. A bájtsorrend itt a két bájt sorrendjét jelenti, nem az egy bájton belüli bitek megfordítását. 
 + 
 +A fájl elejére speciális jelzés is kerülhet, amely segít a bájtsorrend felismerésében. Ezt **BOM**-nak (Byte Order Mark, bájtsorrendjelző) nevezzük. A BOM nem a szöveg részeként olvasandó betű vagy szó. 
 + 
 +A BOM használata nem minden esetben kötelező: a kódolást és a sorrendet más módon is megadhatják. UTF-8-fájl elején is előfordulhat BOM, de ott csak a kódolásra utaló jelzés, mert UTF-8-nál nincs választható bájtsorrend. 
 + 
 +==== 10. Base64: hogyan legyen egy fájlból továbbítható szöveg? ==== 
 + 
 +Eddig szövegek tárolásáról volt szó. Most más feladatot vizsgálunk: van egy tetszőleges fájlunk, például egy képünk, és annak bájtjait olyan mezőben szeretnénk továbbítani, amely szöveget vár. 
 + 
 +A fájl bájtjait nem kezelhetjük egyszerűen betűkként. Tetszőleges értékeik lehetnek, köztük olyanok, amelyeket a fogadó program vezérlőjelként értelmezne. Célszerű ezért az adatot egy szűk, előre rögzített készletből választott, nyomtatható jelekkel leírni. 
 + 
 +Erre szolgál a **Base64**. Tetszőleges bemeneti bájtokat alakít át betűkből, számjegyekből és néhány további jelből álló szöveggé. Ilyen megoldást használnak például számos e-mail-melléklet átvitelekor. 
 + 
 +**Az UTF-8 szöveges karaktereket alakít bájtokká. A Base64 tetszőleges bájtokat alakít szöveges jelekké.** 
 + 
 +A Base64 nem titkosítás: aki ismeri a szabályt, kulcs nélkül vissza tudja állítani az eredeti adatot. 
 + 
 +=== Miért éppen 64? === 
 + 
 +A Base64 a bemeneti biteket **hatos csoportokba** rendezi. Hat bit 64 különböző értéket adhat, 0-tól 63-ig. Mindegyik értékhez egy nyomtatható jelet rendel: 
 + 
 +^ A hat bit értéke ^ Hozzárendelt jel ^
 | 0–25 | ''A''–''Z'' | | 0–25 | ''A''–''Z'' |
 | 26–51 | ''a''–''z'' | | 26–51 | ''a''–''z'' |
Line 224: Line 286:
 | 63 | ''/'' | | 63 | ''/'' |
  
-A kódolás **3 bemeneti bájtból 4 kimeneti karaktert** állít elő, mert 3 × 8 = 4 × 6 = 24 bit. A végén szükség esetén külön kitöltő jel, az ''='' is megjelenik. Ez nem tartozik a 64 adatjelhez.+Az értékek sorrendben követik egymást: 0 jelentése ''A'', 1 jelentése ''B'', 2 jelentése ''C'', és így tovább. 
 + 
 +**Ez a Base64 saját táblázata, nem az ASCII-táblázat.** Például a ''T'' itt a 19 értékű hatbites csoportot jelöli. Amikor magát a kimeneti ''T'' betűt ASCII-szövegként tároljuk, annak bájtértéke 84.
  
 === Példa: Man === === Példa: Man ===
  
-Kódoljuk a ''Man'' szöveg ASCII-bájtjait! Ezek UTF-8 esetén is ugyanazok.+Használjuk bemenetként a ''Man'' szöveg három ASCII-bájtját! Az ASCII-táblázat szerint az ''M'' értéke 77, az ''a'' értéke 97, az ''n'' értéke 110. Először ezeket írjuk fel nyolc biten:
  
 <code> <code>
-Karakterek:        M        a        n +M: 77  = 01001101 
-ASCII-bájtok:      01001101 01100001 01101110+a: 97  = 01100001 
 +n: 110 = 01101110 
 +</code>
  
-6 bites csoportok: 010011 010110 000101 101110 +Ez összesen 24 bit. A bitek sorrendjén nem változtatunk, csak a csoporthatárokat helyezzük át: három nyolcbites csoport helyett négy hatbites csoportot készítünk. 
-Decimális értékek: 19     22     5      46 + 
-Base64-jelek:      T      W      F      u+<code> 
 +Három bájt:         01001101 01100001 01101110 
 +Négy hatos csoport: 010011 010110 000101 101110
 </code> </code>
  
-Az eredmény tehát **TWFu**.+A hatbites csoportokat számként értelmezzük, majd megkeressük a hozzájuk tartozó Base64-jelet:
  
-=== Mi történik, ha nem teljes a három bájtos csoport? ===+^ Hat bit ^ Értéke tízes számrendszerben ^ Base64-jel ^ 
 +| ''010011'' | 19 | T | 
 +| ''010110'' | 22 | W | 
 +| ''000101'' | 5 | F | 
 +| ''101110'' | 46 | u |
  
-A bemenet bájtokból áll, de a bájtok száma nem mindig osztható hárommal. Az utolsó 6 bites adatcsoportot ilyenkor jobbról nulla bitekkel egészítjük ki, a hiányzó kimeneti karakterek helyére pedig ''='' jeleket írunk.+Például ''010011'' = 16 + 2 + 1 = 19, a táblázatban pedig a 19-hez a ''T'' tartozik. Az eredmény tehát **TWFu**.
  
-^ Az utolsó csoport bemenete ^ Kimeneti adatjelek száma ^ Kitöltés ^ +Dekódoláskor ugyanezt végezzük fordítva: a négy jelből négy hatbites csoportot kapunk, majd a 24 bitet három nyolcbites bájtra bontjuk vissza.
-| 3 bájt | 4 | Nincs | +
-| 2 bájt | 3 | Egy ''='' jel | +
-| 1 bájt | 2 | Két ''='' jel |+
  
-**Egybájtos példa:** kódoljuk a ''00000001'' bájtot!+=== Miért jelenik meg egyenlőségjel a végén? ===
  
-<code> +Nem minden fájl bájtszáma osztható hárommal. Ha a végén csak egy vagy két bájt marad, az utolsó hatbites csoporthoz nulla biteket kell hozzáadnunk. A négykarakteres kimeneti csoport hiányzó helyeit ''='' jelekkel töltjük ki.
-Bemenet:          00000001 +
-6 bites csoportok: 000000 01 +
-Nullákkal kiegészítve: +
-                  000000 010000 +
-Értékek:          0      16 +
-Adatjelek:        A      Q +
-Kitöltéssel:      AQ== +
-</code>+
  
-**Kétbájtos példa:** kódoljuk a ''00000010 00000001'' bájtokat!+A ''='' **kitöltő jel**, nem tartozik a 64 adatjelhez, és nem jelent egy újabb hatbites adatcsoportot.
  
-<code> +^ Az utolsó csoportban maradt adat ^ Base64-adatjelek ^ Kitöltés ^ 
-Bemenet:          00000010 00000001 +| 3 bájt | 4 jel | Nincs | 
-6 bites csoportok: 000000 100000 0001 +| 2 bájt | 3 jel | Egy ''='' | 
-Nullákkal kiegészítve: +| 1 bájt | 2 jel | Két ''='' |
-                  000000 100000 000100 +
-Értékek:          0      32     4 +
-Adatjelek:        A      g      E +
-Kitöltéssel:      AgE= +
-</code>+
  
-Dekódoláskor az adatjeleket visszaalakítjuk 6 bites értékekké, majd visszaállítjuk az eredeti bájtokat. Két ''='' esetén az utolsó két adatjel 12 bitjéből csak 8 adatbit; a maradék 4 kitöltő nulla. Egy ''='' esetén az utolsó három adatjel 18 bitjéből 16 adatbit; a maradék 2 kitöltő nulla.+**Példa egyetlen bájttal:** legyen a bemenet az 1 értékű bájt, vagyis ''00000001''.
  
-=== Méretnövekedés és gyakorlati megjegyzések ===+  - Hat bit után elvágjuk: ''000000'' és ''01''. 
 +  - A második csoportot négy nullával egészítjük ki: ''010000''. 
 +  - A két csoport értéke 0 és 16. A Base64-táblázat szerint ezek jele ''A'' és ''Q''. 
 +  - Két adatjelünk van, ezért még két ''='' kitöltő jelet írunk utánuk.
  
-Három bemeneti bájtból négy ASCII-karakter, azaz szöveges tároláskor négy bájt lesz. A méretnövekedés ezért nagyobb adatoknál körülbelül **33%**. Kis adatoknál a kitöltés miatt az arány nagyobb is lehet.+Az eredmény **AQ==**. Visszaalakításkor a két egyenlőségjel mutatja, hogy az utolsó csoport csak egy eredeti bájtot tartalmazott. A két adatjelből visszakapott 12 bit utolsó négy nullája kitöltés, ezt elhagyjuk.
  
-Például 300 bájt adat Base64-alakja 400 karakterből áll, a sortörések és más kiegészítő adatok nélkül.+=== Mennyivel nő az adat mérete? ===
  
-A MIME szerinti Base64-szöveg sorokra tördelhető. Más alkalmazások viszont egyetlen összefüggő karaktersorozatot várhatnak. A sortörések és egyéb idegen karakterek elfogadása ezért az alkalmazás szabályaitól függ; nem feltételezhetjük, hogy minden Base64-dekódoló figyelmen kívül hagyja őket.+A Base64 három bemeneti bájtból négy kimeneti karaktert állít elő. Ha ezeket ASCII-val vagy UTF-8-cal tároljuk, négy bájtot foglalnak.
  
-Ha szöveget szeretnénk Base64-kódolni, előbb meg kell határozni annak bájtjait, például UTF-8 használatával. **A Base64 önmagában nem őrzi meg, milyen karakterkódolással készült a bemeneti szöveg.**+Például **300 bájt adatból 400 bájt** lesz, a sortöréseket és egyéb kiegészítéseket nem számítva. Ez körülbelül **33% méretnövekedés**. Kis bemenetnél a kitöltés miatt az arány nagyobb is lehet. 
 + 
 +A Base64 tehát **nem tömörítés**. Előnye az, hogy a bináris adat szöveges környezetben is továbbítható. Azt, hogy a kódolt szöveg tartalmazhat-e sortörést, az adott alkalmazás szabályai határozzák meg.
  
 ==== Ellenőrző kérdések ==== ==== Ellenőrző kérdések ====
  
-  - Miért nem ábrázolható az ''ő'' betű ASCII-val? +  - Miért kell ugyanazt a kódtáblázatot használnia az írónak és az olvasónak? 
-  - Mi a különbség a Unicode-kódpont és az UTF-8-bájtsorozat között? +  - Miért nem írható le az ''árvíz'' szó ASCII-val? 
-  - Hány bájt a ''mérő'' szó UTF-8-ban, ha a betűk a szokásos önálló kódpontjaikkal szerepelnek, és nincs BOM vagy sortörés? +  - Mit jelent a Unicode-kódpont? Hogyan kapcsolódik hozzá az UTF-8? 
-  - Mit érdemes először ellenőrizni, ha egy CSV-fájlban elromlanak az ékezetek? +  - Mit jelöl az ''U+00F3'', és mit jelöl a ''C3 B3''? 
-  - Mi a különbség egy fájl más kódolással történő megnyitása és átkódolása között? +  - Hány bájtot foglal a ''mérő'' négy betűje UTF-8-ban a példában használt alakokkal? 
-  - Titkos adatnak tekinthető-e egy Base64-kódolt jelszó? Indokolja a választ! +  - Mi a különbség a más kódolással történő megnyitás és az átkódolás között? 
-  - Hány karakterből áll 300 bájt adat Base64-alakja, sortörések nélkül?+  - Miért nem szabad titkosításként használni a Base64-et? 
 +  - Miért lesz három bájtból négy Base64-jel?
  
 === Megoldások === === Megoldások ===
  
-  - Az ASCII-karakterkészlete nem tartalmazza az ''ő'' betűt. +  - Eltérő táblázattal ugyanazokból a számokból más karaktereket állíthatnak vissza. 
-  - A kódpont a karakter azonosítója; az UTF-8-bájtsorozat annak a konkrét tárolási formája. +  - Az ASCII nem tartalmazza az ''á'' és az ''í'' betűt. 
-  - Hat bájt: 1 + 2 + 1 + 2 = 6 byte. +  - A kódpont a karakter számazonosítója. Az UTF-8 meghatározza az ehhez tartozó tárolandó bájtsorozatot. 
-  - Azt, hogy a megnyitóprogram a fájl eredeti karakterkódolását használja-e. +  - Az ''U+00F3'' az ''ó'' Unicode-kódpontja. A ''C3 B3'' a két UTF-8-bájtjának hexadecimális értéke. 
-  - Megnyitáskor a meglévő bájtokat értelmezzük; átkódoláskor új bájtsorozatot hozunk létre. +  - Hat bájtot: 1 + 2 + 1 + 2. 
-  - Nem. A Base64 kulcs nélkül visszaalakítható és nem biztosít titkosságot. +  - Megnyitáskor a meglévő bájtokat értelmezzük; átkódoláskor a felismert karakterekhez más kódolású bájtsorozatot hozunk létre. 
-  - Négyszáz karakterből. +  - Mert a kódolt adat kulcs nélkül visszaállítható. 
- +  - Három bájt 24 bit; ebből négy hatbites csoport készül, és minden csoporthoz egy jel tartozik.
  
tanszek/oktatas/szamitastechnika/karakterkodolas.1790790006.txt.gz · Last modified: by knehez