1 / 13

Aplikační a programové vybavení

Aplikační a programové vybavení. Znakové sady. Základní pojmy. Znak – symbol Kódování ≈ znaková sada = kódová stránka ( encoding ≈ character set ( charset ) = code page ) Je systém přiřazování číselných kódů znakům. Je reprezentováno tabulkou (mapování).

robert-ward
Download Presentation

Aplikační a programové vybavení

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aplikační a programové vybavení Znakové sady

  2. Základní pojmy • Znak – symbol • Kódování ≈znaková sada = kódová stránka (encoding≈character set (charset) = codepage) • Je systém přiřazování číselných kódů znakům. • Je reprezentováno tabulkou (mapování). • Cílem je možnost ukládat symboly ve formě čísel. • Kódové slovo – kód přiřazený symbolu • Kódová jednotka – elementární část kódu

  3. Jedno-bytové kódování • Délka kódu je maximálně jeden byte (single-byte) • Znaková sada ASCII (základní) • délka kódu: 7 bitů → 128 znaků • Obsahuje znaky anglické abecedy, čísla, základní interpunkční znaménka a řídící (netisknutelné) znaky (control characters) • NULL, CR, LF, TAB, ... • Rozšířená sada ASCII = „Národní znakové sady“ • délka kódu: 8 bitů → 256 znaků • Různé varianty obsahují různé specifické národní znaky. • Výhodou je snadné zpracování a rychlost. • Nevýhodou je nedostatečný rozsah sady (čínština má tisíce znaků).

  4. Více-bytové kódování • Délka kódu je jeden a více bajtů (multi-byte) • Kódovou jednotkou je jeden byte. • Rozsah znakové sady závisí na počtu kódových jednotek. • Dvě základní varianty: • Všechny znaky jsou kódované stejným počtem bytů. • Každý znak může být kódován různým počtem bytů podle potřeby (operace s řetězci jsou náročnější).

  5. Národní znakové sady • Základní znaková sada ASCII obsahuje pouze znaky anglické abecedy – jedno-bytové kódování. • Neobsahuje žádné znaky národních abeced. • V 80. letech vzniklo množství národních znakových sad. • Pro češtinu existují: • ISO-8859-2 (ISO Latin 2) • windows-1250 (CP1250) • CP852 (PC Latin 2) • a další: KEYBCS2 (kódování bratrů Kamenických, CP859), East8, ICL, Cork • Klíčovým problémem je nedostatek pozic pro různé národních znaky - jednotlivé znaky se překrývají.

  6. Unicode Současně se vznikem národních kódování začala vznikat univerzální znaková sada – více-bytové kódování. Dvě iniciativy – UnicodeConsortium a ISO. V roce 1991 se již dříve kompatibilní standardy sloučily do Unicode. Všechny verze standardu Unicode vychází souběžně jako ISO standardy. Jednotlivé verze standardu jsou vzájemně kompatibilní. Poslední verze Unicode6.0 vyšla v roce 2010 http://www.unicode.org

  7. Unicode • Znaková sada Unicode definuje několik kódování: UTF-7, UTF-8, UTF-16 a UTF-32. • Kromě kódování Unicode (UTF-n) se používají ještě starší kódování ISO: UCS-2, UCS-4. • Velikost kódové jednotky je 1, 2 nebo 4 byty. • Pokud je kódová jednotka větší jak 1 byte, tak je nutné určit pořadí bytů. • Big Endian (výchozí pořadí) nebo Little Endian • Pořadí bytů se určuje značkou BOM (Byte Order Mark) na začátku souboru/dat.

  8. Unicode kódování • Unicode má nyní 98,884 tisknutelných znaků. • Více jak 800000 dalších pozic je volných. • Kromě toho umožňuje i definice vlastních znaků.

  9. Unicode kódování – srovnání

  10. function utf8_strlen($str) { $count = 0; for ($i = 0; $i < strlen($str); $i++) { //pres vsechny znaky $value = ord($str[$i]); if ($value > 127) { if ($value >= 192 && $value <= 223) { $i++; } elseif ($value >= 224 && $value <= 239) { $i = $i + 2; } elseif($value >= 240 && $value <= 247) { $i = $i + 3; } else { echo ‘Not a UTF-8 compatible string ' } } $count++; } return $count; }

  11. Unicode – shrnutí • UTF-8 řeší naprostou většinu všech problémů s kódováním. • Aplikace může pracovat s daty v libovolném jazyce. • Podpora ze strany aplikací je stále ještě špatná. • Pro reprezentaci dat uvnitř aplikace může být někdy výhodnější využít kódování s konstantním počtem bytů na jeden znak. • Příliš žluťoučký kůň pěl ďábelské ódy.

  12. http://kantorek.webzdarma.cz/

More Related