< Számítástechnika

Karakterkódolás

Szerző: Sallai András

Copyright © 2012, Sallai András

Szerkesztve: 2012, 2014, 2015, 2017

Licenc: 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:

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