[[oktatas:számítástechnika|< Számítástechnika]] ====== Karakterkódolás ====== * **Szerző:** Sallai András * Copyright (c) 2012, Sallai András * Szerkesztve: 2012, 2014, 2015, 2017 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Bevezetés ===== Mivel a számítógép alapvetően számokkal dolgozik, ezért minden általunk használt írásjelnek meg kell feleltetni egy számot. Az írásjel-szám megfeleltetés így egy kódtáblát eredményez. ===== BCD ===== Binary Coded Decimal (BCD) Binárisan kódolt decimális számok. A BCD egy 4 bites sorozatot használ, amely számokat reprezentál. ^ Decimális | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ^ BCD | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | Például 123 így van kódolva: 0001 0010 0011 Tárolt programú vezérlések időzítésénél előfordul. A négyes csoportokat tetrádnak hívjuk, amely görögből származik és négyes csoportot jelent. 19-ig ábrázolhatjuk a számokat a következő formában: ^ BCD kódtáblázat ^^^^ ^ Decimális szám ^ BCD kód ^ Decimális szám ^ BCD kód ^ | 0 | 0000 | 10 | 0001 0000 | | 1 | 0001 | 11 | 0001 0001 | | 2 | 0010 | 12 | 0001 0010 | | 3 | 0011 | 13 | 0001 0011 | | 4 | 0100 | 14 | 0001 0100 | | 5 | 0101 | 15 | 0001 0101 | | 6 | 0110 | 16 | 0001 0110 | | 7 | 0111 | 17 | 0001 0111 | | 8 | 1000 | 18 | 0001 1000 | | 9 | 1001 | 19 | 0001 1001 | Az összeadás szokásos művelet a BCD kódokkal. Ha összeadás esetén átvitel történik, akkor az eredmény négyeshez (terádhoz) hozzá kell adni 0110-át. Adjuk össze 19 és 5 számokat. 0001 1001 0000 0101 _________ 0001 1110 0110 _________ 0010 0100 A 0110 hozzáadásával korrigáltuk a számot. ===== EBCDIC ===== Extended Binary-Coded Decimal Interchange Code. Binárisan kódolt decimális kódrendszer az ASCII-től függetlenül alakult ki. Az **IBM által** 1963 és 1964 között kialakított kódrendszer. Elsőként az **IBM System/360** rendszeren használták. Az ASCII szabvány fő támogatója akkoriban az IBM, de nem volt megvalósított verziójuk. Itt használták * IBM nagyszámítógépein * System/360 * z/OS * OS/390 * VM * VSE * IBM minikomputerein * OS/400 * i5/OS A binárisan kódolt decimális (BCD) kódrendszer kiterjesztéseként jött létre. Jellemzője: * **8 bites**, szemben a 7-bites ASCII-vel * számtalan változata létezik, országok nyelvéhez igazítva * néhány Kelet-Ázsiai ország a 2 byte-os megfelelőjét használja * japán * kínai * koreai ===== ASCII ===== ==== 7-bites ASCII ==== Az eredeti amerikai kódtábla, a számítógépek elterjedése előtt. Ebben az időben is 8-bittel dolgoztak, de a 8-dik bitet másra használták. Az angol betűk tárolásához a 7 bit teljességgel elég volt. ^ karakter ^ decimálisan ^ kód ^ | NUL | 0 | 0000000 | | ... | ... | | | a | 97 | 1100001 | | b | 98 | 1100010 | | c | 99 | 1100011 | | d | 100 | 1100100 | | e | 101 | 1100101 | | ... | ... | | | ~ | 126 | 1111110 | | | 127 | 1111111 | ==== 8-bites ASCII ==== A számítógépek elterjedése magával hozott egy problémát. A 7-bites ASCII kódtábla nem tartalmazott minden nyelvterületen használható betűket. Így használni kezdték a 8-dik bitet is. A 8-bites ASCII-t minden nyelvterületen saját karaktereik leírására használták. Ilyen nyelvterületek: * Nyugat Európai * Szabvány: ISO-8859-1 * Gyakran így említik: Latin 1 * é, ü * dán, holland (részben), angol, feröeri, * finn (részben) francia (részben), német, * izlandi, ír, olasz, norvég, portugál, * réto-román, skót, spanyol, svéd, albán, afrikaans, szuahéli * Közép Európai * Szabvány: ISO-8859-2 * Gyakran így említik: Latin 2 * ő, ű * bosnyák, lengyel, horváth, cseh, szlovák, szlovén, magyar * 3 latin3 * török, máltai, eszperantó * 4 latin4 * észt, lett, litván, grönlandi, számi * 5 latin/cirill * cirill ábécé (belorusz, bolgár, macedon, orosz, szerb, ukrán) * 6 latin/arab * arab * 7 latin/görög * görög, ó-görög * 8 latin/héber * héber * 9 latin5 török * ritkán használt izlandi és török; kurd nyelv * 10 latin6 északi * a latin4 átrendezése * 11 latin1/thai * thai * 12 * nem készült el * 13 latin7/balti római * balti római (a latin4-ből és a latin-6-ból hiányzó) * 14 latin8 kelta * kelta nyelvek (gail és breton) * 15 latin9 * 8859-1 felülvizsgálata (€) * 16 latin10 * Latin-10 délkelet-európai * albán, horvát, magyar, olasz, lengyel, * román, szlovén * finn, francia, német, ír (új írású) ^ karakter ^ decimálisan ^ kód ^ | NUL | 0 | 00000000 | | ... | ... | | | a | 97 | 01100001 | | b | 98 | 01100010 | | c | 99 | 01100011 | | d | 100 | 01100100 | | e | 101 | 01100101 | | ... | ... | | | | 254 | 11111110 | | | 255 | 11111111 | ===== Unicode ===== ==== Bevezetés ==== A Unicode kódolást azért hozták létre, mert minden nyelvterületen más és más kódolást használtak. Ha egyik nyelvterületről a másikra kellett adatokat küldeni, akkor mindig át kellett kódolni az adatokat. A Unicode kódolást úgy alkották meg, hogy a föld összes nyelvterületének betűit, ábráit lefedje. A Unicodenak több megvalósítása is van. Ilyenek: * UTF-8 - A karakterek 1, 2, 3 vagy 4 bytes * UTF-16 - A karakterek 2 vagy 4 bytes * UTF-32 - Minden karakter 4 bytes, azaz 32 bit * stb. A Unicode karakterek gyűjteménye: * http://www.unicode.org/charts/ ==== UTF-8 ==== Egy Unicode megvalósítás, változó bájthosszúságú kódolás. Hogy hány bájton tárolunk egy karaktert változó. Ha például csak az angol ábéc betűig használjuk, akkor 1 bájt. Magyar ékezetesek használata esetén 2 bájton tárolódnak a karakterek. A japán kara (üres) szó 3 bájton van tárolva. ==== A magyar ékezetesek ==== | á | 00e1 | | í | 00ed | | é | 00e9 | | ö | 00f6 | | ó | 00f3 | | ü | 00fc | | ő | 0151 | | ű | 0171 | ==== Han írás ==== A következő unicode karakterek csak telepített fontkészlet mellett láthatók. Debian GNU/Linux alapú rendszereken például: apt install ttf-hanazono üreskéz: | | 7a7a | HTML: 31354 | | | 624b | | Az írásjelek UTF-8 esetén 3 bytes, UTF-16 bytes esetén 2 bytes, UTF-32 esetén 4 byteson tárolódnak. Linuxon unicodebevitel: Ctrl + Shift + U Ekkor megjelenik egy U betű aláhúzva. Ha nem jelenik meg, akkor az aktuális program nem támogatja. Az U betű után beírjuk a bevinni kívánt kódot. Unicode beszúró más rendszerekre: * http://www.fileformat.info/tool/unicodeinput/index.htm * http://www.fileformat.info/tool/unicodeinput/unicodeinput.zip Az unicodeinput program, ha egyszer használtuk, nem záródik be, az Alt+Plusz billentyűvel érhető el. | Víz | | 6c34 | UTF-16 és UTF-8 esetén 2 bytes | | | 5165 | bemenet | | | 9580 | kapu | ==== Sumér-akkád ékírás ==== A következő karakterek 4 bájton tárolódnak utf-8 esetén is. A sumér-akkád ékírás kódjai 12000–1236E és 12400–12473 között vannak (angolul: cuneiform). ^ írásjel ^ kód ^ | 𒀀 | 12000 | | 𒀁 | 12001 | | 𒀂 | 12002 | | | ... | | 𒍮 | 1236E | | | ... | | 𒐀 | 12400 | | 𒐁 | 12401 | | | ... | | 𒑳 | 12473 | Ha nincsenek telepítve az őskori fontok, akkor a fenti táblázatban csak négyzetek vannak. Ezért a következő ábrán kép formájában látjuk ugyanezt: {{:oktatas:szamitastechnika:karakterkodolas_sumer-akkad-ekiras.png|}} A megjelenítéshez **Ancient** Scripts Unicode fontkészlet szükséges. Ősköri fontok készlete. Debian GNU/Linuxon, Ubuntun, LinuxMint rendszeren így telepíthető: apt-get install ttf-ancient-fonts Windowson kiindulásnak: * http://culmus.sourceforge.net/ancient/ ==== Magyar rovásírás ==== A magyar rovásírás betűit a következő kódpontokon érhetjük el: U+10C80 - U+10CFF A következő karakterekhez szükség van megfelelő fontokra: 𐲀𐲁 Szükséges fontok: * http://oldhungarian.eu/ * https://github.com/OldHungarian/old-hungarian-font (Release-re kell kattintani) * https://github.com/OldHungarian/old-hungarian-font/releases * https://github.com/googlefonts/noto-fonts/tree/master/hinted/ttf/NotoSansOldHungarian ==== Még néhány Unicode lehetőség ==== Az írás mellett többféle szimbólum is megjeleníthető a Unicode segítségével. Néhány példa: ☉ ☿ ♀ ♁ ☽ ♂ ♃ ♄ ⛢ ♆ ♇ ⛈ ⛅ ☼ 🍏 🍔 🍷 🍅 𝄞♩ ♩ ♩ ♪ 𝄽 ♫ ♫ ♫ ♬ 𝅘𝅥𝅯 𝅗𝅥 ☠ ☢ ☣ ☤ ♖ ♘ ♗ ♔ ♕ ♗ ♘ ♖ ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ ⚽ ⚾ ⛷ 🏃 * ⬭ 2b2d eilipszis * △ 25b3 háromszög * ⊿ 22bf derékszögű háromszög * ⬜ 2b1c négyzet * ▭ 25Ad téglalap * ♢ 2662 rombusz * ⬠ 2b20 pentagon * ⬡ 2b21 hexagon * ○ 25cb kör * 𓅓 U+13153 egyiptomi hieroglif m hang, madár; mondat végét jelző jel 𓀆 𓀏 𓂡 𓀒 𓀐 𓀗 𓀙 𓀝 𓀭 𓀾 𓂝 𓇖 𓇌 𓆲 𓅓 √ ∛ ✗ ✘ ✓✔ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ===== Alapértelmezett kódolások ===== ^ Operációs rendszer ^ Alapértelemezett kódolás ^^^ ^ ::: ^ Western Latin ^ Cyrillic ^ magyar ^ | Modern Unices (*BSD, Mac OS X, GNU/Linux) | utf-8 | utf-8 | utf-8 | | Mac (OS X előtt) | applemac | maccyr | ? | | Unix (régi) | latin1 | koi8-ru | latin2 | | Windows | ansinew, cp1252 | cp1251 | cp1250 | | DOS, OS/2 | cp850 | cp866nav | cp852 | | régi DOS | [[wp>Code_page_437|cp437]] | | | ===== A magyar ékezethelyesség ellenőrzésére kitalált mondatok ===== * árvíztűrő tükörfúrógép * Kázmér füstölgő fűnyírót húz * öt szép szűzlány őrült írót nyúz * tüskés hátú kígyóbűvölő ===== Linkek ===== Unicode leírások * http://www.cs.bme.hu/~egmont/utf8/ * http://hu.wikipedia.org/wiki/UTF-8 * http://hu.wikipedia.org/wiki/ISO/IEC_10646 * http://hu.wikipedia.org/wiki/UTF-32/UCS-4 * http://hu.wikipedia.org/wiki/Univerz%C3%A1lis_karakterk%C3%A9szlet * http://hu.wikipedia.org/wiki/Unicode_karakterek_elhelyezked%C3%A9se * http://unicode-table.com/hu/ Han írás karaktereinek keresője: * http://www.cojak.org Nemzetközi han karakter és variánsainak adatbázisa: * http://chardb.iis.sinica.edu.tw Kapcsolódó téma (Han írás): * http://hu.wikipedia.org/wiki/K%C3%ADnai_%C3%ADr%C3%A1s Lecke: * http://infoerettsegi.blog.hu/2012/02/04/karakterkodolasok_a_szobeli_informatika_erettsegire Egyéb: * http://en.wikibooks.org/wiki/LaTeX/Special_Characters Windowsra Unicode beírásához: * http://www.fileformat.info/tool/unicodeinput/index.htm ASCII-vel egyező Unicode: * http://www.unicode.org/charts/PDF/U0000.pdf Táblák: * http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml * http://unicode-table.com/ * https://dev.w3.org/html5/html-author/charref