Karakter kódolások UCS, UTF, Base 64 Dr. Nehéz Károly egyetemi adjunktus Miskolci Egyetem Alkalmazott Informatikai Tanszék 2005 1.

Slides:



Advertisements
Hasonló előadás
ECM/DMS A GYAKORLATBAN E-SZÁMLA KIBOCSÁTÁS ÉS BEFOGADÁS E-SZÁMLA KIBOCSÁTÁS ÉS BEFOGADÁS
Advertisements

Fókuszban az önkormányzati tagsággal rendelkező szociális szövetkezetek _ A pályázatkezelői felület bemutatása.
Irattári és levéltári funkciók a tanúsított szoftverekben Vágujhelyi Ferenc.
Beruházási és finanszírozási döntések kölcsönhatásai 1.
1 Számítógép Hálózatok A hálózatok kialakulása, alapfogalmak Készítette: Csökmei István Péter ( CsIP ) Szegedi Tudományegyetem Természettudományi Kar levelező.
ISKOLAKÉSZÜLTSÉG – AZ ADAPTÍV VISELKEDÉS FEJLETTSÉGE dr. Torda Ágnes gyógypedagógus, klinikai gyermek-szakpszichológus Vizsgálóeljárás az iskolába lépéshez.
Az IKER önértékelő IKER társadalmasítás workshop Budapest, április 12.
A közösségi szabadalom megteremtése és az európai szabadalmi rendszer dr. Stadler Johanna Magyar Szabadalmi Hivatal Belső Piaci Hét november 25.
KÉPZŐ- ÉS IPARMŰVÉSZET ISMERETEK ÁGAZATI SZAKMAI ÉRETTSÉGI VIZSGA (középszintű) május-június.
Internet tudományos használata
Gazdasági informatika - bevezető
Nagyméretű állományok küldése
A szerkezetátalakítási programban bekövetkezett változások
Operációs rendszerek.
Valószínűségi kísérletek
2. előadás Viszonyszámok
Adatbázis normalizálás
Vezetékes átviteli közegek
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Becslés gyakorlat november 3.
Számítógépes hálózati alapismeretek - vázlat
Elemi adattípusok.
A program főmenüjében a Könyvelés -> Számlázás -> Számlakészítés menüpontot kell választani
Microsoft Excel BAHAMAS tanfolyam
376/2014 EU RENDELET BEVEZETÉSÉNEK
A közigazgatással foglalkozó tudományok
Balaton Marcell Balázs
A KINOVEA mozgáselemző rendszer használata
LabVIEW bevezetéstől a feszültség-áram karakterisztikáig Vida Andrea
RÁDIÓRENDSZEREK Képi jelek Győr.
Tömörítés.
Downstream Power Back Off (DPBO)
SZÁMVITEL.
CSOPORT - A minőségellenőrök egy megfelelő csoportja
Kockázat és megbízhatóság
Lexikális elemző: lex (flex)
Az élesség beállítása vagy fókuszálás
Downstream Power Back Off (DPBO)
Hogyan lehet sikeresen publikálni?
Közigazgatási alapvizsga a Probono rendszerben
Kvantitatív módszerek
Grosz imre f. doc. Kombinációs hálózatok /43 kép
Számítógépes Hálózatok
Teljes visszalépéses elemzés
Számítógépes Hálózatok
STRUKTURÁLT SERVEZETEK: funkció, teljesítmény és megbízhatóság
Vonalkódok Kajdocsi László Informatika tanszék A602 iroda
Informatikai gyakorlatok 11. évfolyam
Készletek - Rendelési tételnagyság számítása -1
A villamos installáció problémái a tűzvédelem szempontjából
Új pályainformációs eszközök - filmek
A minőségellenőrzést támogató program bemutatása, Kérdőívek értékelése
Szabványok, normák, ami az ÉMI minősítési rendszerei mögött van
Oracle Adatbázisok kezelése c#-ban
Tájékoztatás a évi Országos Statisztikai Adatfelvételi Program (OSAP) teljesüléséről az Országos Statisztikai Tanács és a Nemzeti Statisztikai Koordinációs.
Alkalmazott Informatikai Tanszék
TÁRGYI ESZKÖZÖK ELSZÁMOLÁSA
További rendező és kereső algoritmusok
A szállítási probléma.
Foglalkoztatási és Szociális Hivatal
Binomiális fák elmélete
Erasmus+ hallgatói mobilitásra jelentkezéshez
Matematika II. 5. előadás Geodézia szakmérnöki szak 2015/2016. tanév
Tájékoztató az EPER pályázati folyamatáról
TITKOSÍTÓ ALGORITMUSOK
Szöveges adatok tárolása
Edényrendezés - RADIX „vissza” - bináris számokra
Vektorok © Vidra Gábor,
A POWERPOINT 2007 újdonságai
Algoritmusok.
Előadás másolata:

Karakter kódolások UCS, UTF, Base 64 Dr. Nehéz Károly egyetemi adjunktus Miskolci Egyetem Alkalmazott Informatikai Tanszék

Áttekintés ASCII – 60-as években fejlesztették. 128 különböző jelet kódolhat. 8 bites kódolások – ASCII-vel visszafelé kompatibilis kódolások ig terjedő kódok különböző ékezetes betűket kódolnak. A probléma: az élő nyelvekben 128- nál többféle ékezetes írásjelet, betűt használnak. - ISO (Latin-1) A nyugat európai ékezetes karaktereket kódolnak - ISO (Latin 2) Kelet európai készlet. A magyar nyelv speciális jeleit is tartalmazza: ű,ő. Gyakori problémák: (amennyiben a karakterkódolást nem tartalmazza a dokumentum) - Ô – - Š összekeveredhetnek.

UCS és ISO10646 Az ISO szabvány definiál egy univerzális karakter halmazt (UCS – Universal Character Set). Biztosítja, hogy nem lesz információvesztés ha egy tetszőleges írásjelet átalakítunk UCS-re majd vissza az eredeti kódolására. ( UCS tartalmazza az összes ismert nyelv írásjeleit. Nem csak a ma használatosakat, hanem a történeti népek holt nyelveinek jeleit is. Továbbá az ismert matematikai, tudományos szimbólumokat is. A szabvány folyamatosan bővül. A szabványt 1993-ban publikálták először (ISO ). Eredetileg 31 bites kódolás. A 0x0000 és 0xFFFD terjedő 16 bites tartományt Basic Multilingual Plane-nek (BMP-nek) nevezzük. - ISO ben jelent meg. A BMP-n kívüli tartományt tartalmazza ban a két halmazt egyesítették a ISO ban. Az USC szabvány szerint a kódolt karakterek nem csak egy számmal, hanem névvel is rendelkeznek. Az UCS kód szabványos előtagja az U+ –U+0041 – „Latin capital letter A”

Az U+0000 és U+007F közötti tartomány megfelel az ASCII 7 bites változatának. Az U+0080 és U+00FF tartomány a Latin-1-nek felel meg. A 80-as évek végére két szervezet egymástól függetlenül próbált létrehozni egységes karakterkészletet. ISO és a Unicode Project után összefogtak és kidolgoztak egy közös kódtáblát. A két szervezet mind a mai napig kiadja az újabb változatokat de az ISO szabvánnyal továbbra is kompatibilisek a változások. –ISO : Unicode 1.1 –ISO : Unicode 3.0 –ISO : Unicode 3.2 –ISO 10646: Unicode 4.0 Minden Unicode verzió a 2.0-tól kompatibilis, azóta csak újabb karaktereket adtak a szabványhoz, a meglévőket nem módosították. A különbség az ISO és a Unicode között az, hogy ameddig az ISO egy kódtáblázatot jelent, addig az Unicode ezen felül tartalmaz tipográfiai szabványokat is. Megjelenítési eljárásokat (Arab, Héber írásjelekhez), több irányú szövegek kezelését egy dokumentumon belül, valamint rendező és szöveg összehasonlító algoritmusokat.

UTF-8 kódolás UnicodeUTF xxxxxxx0xxxxxxx yyy yyxxxxxx110yyyyy 10xxxxxx xxxxxxxx xxxxxxxx1110xxxx 10xxxxxx 10xxxxxx xxxxx xxxxxxxx xxxxxxxx11110xxx 10xxxxxx 10xxxxxx 10xxxxxx xx xxxxxxxx xxxxxxxx xxxxxxxx111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx A 7 bits ASCII kódokat változtatás nélkül kódoljuk. Az UTF első bájtjában annyi 1- es szerepel az első 0 előtt, ahány bájt fogja követni az elsőt. A ó Unicode kódja a decimális 243, azaz hexadecimális 0x00F3, bináris ) a második szabályra húzható rá (mivel az első csak 7 bitet kódolhat), tehát UTF-8 kódja bináris , vagyis egy decimális 195, azaz hexa 0xC3, majd ezt követően egy decimális 179, azaz hexadecimális 0xB3 byte.

UTF-16 kódolás Az Unicode v 3.0 szabvány része A karakterek 1 vagy 2 darab 16 bites, előjel nélküli, egész értékként lesznek kódolva, a karakter értékétől függően. Szabályok: –Ha a kódolandó karakter értéke kisebb mint 0x10000, akkor 1 db 16 bites előjel nélküli egészként lesz tárolva. –Ha a kódolandó érték 0x10000 és 0x10FFFF között van, akkor két 16 bites értékkel tárolják le. Az első 0xD800 és 0xDBFF közötti egész, a második 0xDC00 és 0xDFFF közötti egész lesz. –Ha a karakter értéke nagyobb mint 0x10FFFF akkor nem lehet UTF-16 kódolással kódolni. Megjegyzés: A 0xD800 és 0xDFFF közötti értékek az UTF-16 számára foglaltak az unicode nem definiál karaktereket a fenti tartományban. UTF-16BE (Big Endian), UTF-16LE (Little Endian)

UTF-16 kódolás Legyen U a kódolandó karakter, tegyük fel, hogy U<0x10FFFF 1.Ha U < 0x10000, kódold U-t egy 16-bites előjel nélküli egészként. GOTO 5. 2.Legyen U' = U - 0x Mert U kisebb vagy egyenlő mint 0x10FFFF, U‘-nek kisebbnek, vagy egyenlőnek kell lennie mint 0xFFFFF. Ebből következik, hogy U' felírható 20 bittel. 3.Legyen W1 és W2, a következő két 16 bites egész értékek 0xD800 és 0xDC00. E két érték rendelkezik szabad bittel a kódoláshoz. 4.Az U’ felső 10 bitjét ‘rendeld hozzá’ W1-hez és az alsó 10 bitjét W2-hez vagy műveletekkel. A kódolt értékek W1 és W2 lesznek. 5.Vége. U' = yyyyyyyyyyxxxxxxxxxx W1 = yyyyyyyyyy W2 = xxxxxxxxxx utf16(c) { if (c > 0xFFFF) { putwchar (0xD7C0 + (c >> 10)); putwchar (0xDC00 | c & 0x3FF); }

UTF-16 dekódolás Legyen W1 a következő 16 bites egész a szöveget leíró bájtsorozatból. Legyen W2 az ezt követő 16 bites egész. 1.Ha W1 0xDFFF, a karakter értéke U=W1 Vége. 2.Ellenőrizd, hogy W1 0xD800 és 0xDBFF között van. Ha nem tejesül a feltétel, akkor hiba történt az átvitelben. Vége. 3.Ha nincs W2, (azaz a W1 volt az utolsó karakter a sorban), vagy W2 nincs 0xDC00 és 0xDFFF között akkor az átvitelben hiba történt. Vége. 4.Legyen U’ 20-bites előjelnélküli egész. U’-t képezzük W1 és W2 alsó bitjéből. 5.Adjunk hozzá 0x10000-t U‘-hez. A kódolt karakter: U = U’+0x10000

Példák Kódoljuk a v = 0x64321 karaktert UTF-16 kódolással. v′ = v - 0x10000 = 0x54321 = vh = // v′ felső 10 bit-je vl = // v′ alsó 10 bitje w1 = 0xD800 // konstans 1 w2 = 0xDC00 // konstans 2 w1 = w1 | vh = | = = 0xD950 w2 = w2 | vl = | = = 0xDF21 Az eredmény: 0xD950 0xDF21

KódKarakterUTF (0x6C34)víz jele, Kínai6C (0x7A)Kis latin z.007A (0x1D11E)Violin ‘G’ kulcsD834 DD1E Kódolás megnevezése Byte sorrendByte sorozat UTF-16LELittle endian34 6C, 7A 00, 34 D8 1E DD UTF-16BEBig endian6C 34, 00 7A, D8 34 DD 1E UTF-16Little endian és BOM (Byte Order Marker) FF FE, 34 6C, 7A 00, 34 D8 1E DD UTF-16Big endian és BOMFE FF, 6C 34, 00 7A, D8 34 DD 1E Kódoljuk a Kínai víz jelét, a kis latin z-t, és a violin ‘G’ kulcsot, UTF-16 LE (Little Endian) és BE (Big Endian) változataival valamint BOM segítségével. Megjegyzés: BOM, FF FE = LE és FE FF = BE

Base64 kódolás Multipurpose Internet Mail Extensions (MIME) az internet hivatalos levélformátuma. A levelek az SMTP (Simple Mail Transfer Protocol) protokoll segítségével továbbítódnak a címzetthez. Az SMTP protokoll csak 7 bites ASCII karakterek továbbítását támogatja. A MIME szabvány többféle módszert támogat a bináris adatok továbbításához. Az egyik legismertebb a base64 kódolás Content-type: multipart/mixed; boundary="frontier" MIME-version: frontier Content-type: text/plain This is the body of the message. --frontier Content-type: application/octet-stream Content-transfer-encoding: base64 gajwO4+n2Fy4FV3V7zD9awd7uG8/TITP/vIocxXnnf/5mjgQjcipBUL1b3uyLwAVtBLOP4nV AhSzlZnyLAF8na0n7g6OSeej7EjlF/aglS6ghfju FgRr+OX --frontier--

Base 64 kódolás Base64 adat reprezentáció egy 64 jelből álló készleten alapul. A kódolást 6 bites csoportokon végezzük – ‘A’.. ‘Z’ – ‘a’ – ‘z’ – ‘0’ – ‘9’ 62 – ‘+’ 63 – ‘/’ Példa: kódoljuk a következő bináris adatot: ‘ ’ Bontsuk fel két 6 bites részre: ‘001100’, ‘110011’ Ezek decimálisan 12 és 51. A táblázat alapján: 12=M és 51=z Mz

A kódolás 3 byte-onként történik, és az eredmény 4 karakter lesz. Hogyan kódolunk, ha a kódolandó bájtok száma nem osztható 3-al? Kódoljuk a ‘ ’ ‘ ’-t: 1. Egészítsük ki 3 byte-ra ‘ ’ ‘ ’ ‘ ’ 2. Bontsuk fel 6 bitekre: Az eredmény ‘AgE=’ Kódoljuk a t: 1. Egészítsük ki 3 byte-ra ‘ ’ ‘ ’ ‘ ’ 2. Kódoljuk az eredményt: Az eredmény ‘AQ==‘

Dekódolás: 4 karakterenként visszafelé majd 8 bitenként csoportosítva. Az egyenlőség jelek száma alapján el lehet dönteni, hogy az utolsó 6 vagy 12 bitet figyelembe kell-e venni. A kódolás fontos előnye, hogy sortörő karaktert is tartalmazhat. (minden olyan karaktert is ami a kódtáblázatból hiányzik). De a dekódolásnál ezt figyelembe kell venni.