unicode - univerzální znaková sada
The international standard ISO 10646 defines the Universal Character Set (UCS).
UCS contains all characters of all other character set standards. It also
guarantees "round-trip compatibility"; in other words, conversion
tables can be built such that no information is lost when a string is
converted from any other encoding to UCS and back.
UCS obsahuje znaky potřebné pro téměř
všechny známé jazyky. Mimo jiné je to mnoho
jazyků využívajících
rozšíření latinky a také
následující jazyky a písma: řečtinu,
azbuku, hebrejštinu, arabštinu, arménštinu,
gruzínštinu, japonštinu, čínštinu,
korejské ideogramy Han, písma Hiragana, Katakana, Hangul,
Devangari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada,
Malayalam, thajštinu, Lao, Khmer, Bopomofo, tibetštinu,
runové písmo, etiopštinu, kanadské slabiky,
Cherokee, mongolštinu, Ogham, barmštinu,
sinhálštinu, Thaana, Yi a mnoho jiných. Pracuje se na
vložení dalších písem jako hieroglyfy a
různé historické indoevropské jazyky,
eventuálně by mohly být začleněny
některé umělé jazyky, jako Tengwar, Cirth a
klingonština. UCS navíc ke znakům pro tyto jazyky
obsahuje grafické, typografické, matematické a
vědecké symboly používané např. v
TeXu, PostScriptu, APL, MS-DOSu, MS-Windows, Macintosh, OCR, stejně tak
jako v mnoha systémech pro zpracování textu a
publikování, které neustále
přibývají.
Kódování UCS (ISO 10646) popisuje 31-bitovou znakovou sadu,
sestávající ze 128 24-bitových IR skupin , z
nichž každá je rozdělena do 256 16-bitových
planes(ploch), které se skládají z 256
8-bitových
řad s 256
sloupci - pro
každý znak jeden. Část 1 standardu (ISO 10646-1)
definuje prvních 65534 kódů (0x0000 až 0xfffd),
tvoří tzv.
Basic Multilingual Plane (BMP), tj. plochu 0
ve skupině 0. Část 2 standardu (ISO 10646-2)
doplňuje znaky do skupiny 0 mimo BMP v několika
doplňkových plochách v rozsahu 0x100000 až
0x10ffff. Doplnění znaků nad 0x10ffff se
neplánuje, z celého kódového prostoru skupiny 0
bude tedy v dohledné budoucnosti využita pouze malá
část. BMP obsahuje všechny znaky, obsažené
v obvykle užívaných znakových sadách.
Doplňkové plochy doplněné v ISO 10646-2
zahrnují pouze exotické znaky pro zvláštní
vědecké použití, tisk slovníků,
publikování, vysokoúrovňové protokoly a
nadšence.
Reprezentaci každého UCS znaku jako dvoubajtového slova se
říká UCS-2 forma (jen pro znaky z BMP), zatímco
UCS-4 je reprezentace každého znaku
čtyřbajtovým slovem. Navíc existují
dvě formy kódování: UTF-8 pro zpětnou
kompatibilitu s programy zpracovávajícími ASCII a UTF-16
pro zpětně kompatibilní zpracování
znaků mimo BMP až do 0x10ffff programy
používajícími UCS-2.
Kódování UCS pro znaky mezi 0x0000 a 0x007f je
totožné s běžnou sadou US-ASCII a znaky mezi
0x0000 a 0x00ff jsou totožné se sadou ISO 8859-1 Latin-1.
Některé kódy v UCS jsou přiřazeny tzv.
akcentům. Tyto jsou podobné neposouvajícím
znakům na psacím stroji. Akcent modifikuje
předchozí znak.
Nejdůležitější znaky s akcenty sice
mají své vlastní kódy v UCS, ale akcentové
znaky dovolují přidat libovolné diakritické
znaménko k libovolnému znaku. Akcent vždy
následuje znak, který je modifikován.
Například, německý znak Umlaut-A
("Velké A v latince s umlautem") může
být reprezentován pomocí kódu UCS 0x00c4 a nebo
alternativně jako kombinace normálního velkého A,
následovaného akcentem umlaut: 0x0041 0x0308.
Akcenty jsou nezbytné např. pro thajské písmo, pro
matematické tisky a pro uživatele Mezinárodní
fonetické abecedy.
Protože se neočekává,že všechny
systémy budou podporovat všechny varianty
kódování, ISO 10646-1 definuje
následující tři
úrovně
implementace UCS:
- Level 1
- Akcenty a znaky Hangul Jamo (speciální,
komplikované kódování korejského
písma, kde jsou jednotlivé symboly dány jako sekvence
dvou či tří znaků) nejsou
podporovány.
- Level 2
- Jako level 1, přičemž
některé kombinující znaky jsou povoleny
(např. pro thajštinu, Lao, hebrejštinu,
arabštinu, Devangari, Malayalam).
- Level 3
- Všechny znaky z UCS jsou povoleny.
Standard Unicode 3.0 publikovaný Unicode Consorciem sestává
přesně z UCS Basic Multilingual Plane na úrovni
implementace level 3, definované v ISO 10646-1:2000. Unicode 3.1
přidává doplňkové plochy z ISO 10646-2.
Standard Unicode a technické zprávy, které Unicode
Consotium publikuje, obsahují mnoho dodatečných
informací o semantice a doporučených
použitích různých znaků. Poskytují
vodítka a algoritmy pro editování,
třídění, porovnávání,
normalizování, konverzi a zobrazování Unicode
řetězců.
V GNU/Linuxu je datový typ jazyka C
wchar_t definován jako
32 bitový integer. Knihovna jazyka C jeho hodnoty vždy
interpretuje jako kódové hodnoty UCS (ve všech locale),
což je konvence, kterou GNU knihovna jazyka C oznamuje aplikacím
definováním konstanty
__STDC_ISO_10646__, tj. tak, jak to
určuje standard ISO C99.
UCS/Unicode může být, stejně jako ASCII,
používáno ve vstupních a výstupních
proudech, terminálové komunikaci, souborech prostého
textu, názvech souborů a proměnných
prostředí prostřednictvím ASCII
kompatibilního vícebajtového
kódování UTF-8. K užívání
UTF-8 jako kódování znaků pro všechny
aplikace je třeba vybrat vhodné
locale pomocí
proměnných prostředí (např.
"LANG=en_GB.UTF-8").
Funkce
nl_langinfo(CODESET) vrací název zvoleného
kódování. Knihovní funkce jako
wctomb(3) a
mbsrtowcs(3) mohou být použity ke konverzi
interního typu
wchar_t do kódování
používaného systémem a naopak. Funkce
wcwidth(3) říká, kolik o pozic (0–2)
postoupil kurzor po vytištění znaku.
In the Basic Multilingual Plane, the range 0xe000 to 0xf8ff will never be
assigned to any characters by the standard and is reserved for private usage.
For the Linux community, this private area has been subdivided further into
the range 0xe000 to 0xefff which can be used individually by any end-user and
the Linux zone in the range 0xf000 to 0xf8ff where extensions are coordinated
among all Linux users. The registry of the characters assigned to the Linux
zone is maintained by LANANA and the registry itself is
Documentation/admin-guide/unicode.rst in the Linux kernel sources (or
Documentation/unicode.txt before Linux 4.10).
Two other planes are reserved for private usage, plane 15 (Supplementary Private
Use Area-A, range 0xf0000 to 0xffffd) and plane 16 (Supplementary Private Use
Area-B, range 0x100000 to 0x10fffd).
- •
- Information technology — Universal Multiple-Octet
Coded Character Set (UCS) — Part 1: Architecture and Basic
Multilingual Plane. International Standard ISO/IEC 10646-1, International
Organization for Standardization, Geneva, 2000.
- This is the official specification of UCS. Available
from
http://www.iso.ch/
- •
- The Unicode Standard, Version 3.0. The Unicode Consortium,
Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.
- •
- S. Harbison, G. Steele. C: A Reference Manual. Fourth
edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
- Dobrá referenční kniha o jazyku C.
Čtvrté vydání také zahrnuje dodatek 1 z
roku 1994 ke standardu ISO C 90, který přidává
mnoho knihovních funkcí pro práci s wide-byte a
multi-byte kódováními, ale ještě
nezahrnuje ISO C99, které dále zlepšilo podporu
těchto kódování.
- •
- Technické zprávy Unicode.
- •
- Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
- •
- Bruno Haible: Unicode HOWTO.
locale(1),
setlocale(3),
charsets(7),
utf-8(7)
Překlad této příručky do
španělštiny vytvořili Jiří
Pavlovský <
[email protected]> a Pavel Heimlich
<
[email protected]>
Tento překlad je bezplatná dokumentace;
Přečtěte si
GNU
General Public License Version 3 nebo novější
ohledně podmínek autorských práv. Neexistuje
ŽÁDNÁ ODPOVĚDNOST.
Pokud narazíte na nějaké chyby v překladu
této příručky, pošlete e-mail na adresu
[email protected]