[[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 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