Provided by: manpages-pl_0.7-1_all 

NAZWA
unicode - zunifikowany zestaw znaków
OPIS
Międzynarodowy standard ISO 10646 definiuje Universal Character Set (UCS). UCS zawiera wszelkie znaki
wszelkich innych zestawów znaków. Gwarantuje on również kompatybilność na okrągło, tj. budowanie takich
tablic konwersji, że podczas konwersji łańcucha z jednego kodowania na UCS i z powrotem nie jest tracona
żadna informacja.
UCS zawiera znaki wymagane do przedstawienia praktycznie wszystkich znanych języków. Obejmuje to nie
tylko pismo łacińskie, greckie, hebrajskie, arabskie, armeńskie, gruzińskie i cyrylicę, lecz także
ideogramy chińskie, japońskie oraz koreańskie Han, jak również następujące: hiragana, katakana, hangul,
dewanagari, bengalskie, gurmukji, gujarati, oriya, tamil, telugu, kannada, malajlamski, tajski, lao,
kmerski, bopomofo, tybetański, runiczne, etiopskie, kanadyjskie sylabiczne, cherokee, mongolskie,
oghamskie, myanmar, sinhala, thaana, yi i inne. Nad pismami, które nie zostały jeszcze uwzględnione,
trwają prace nad najlepszym ich zakodowaniem do użytku komputerowego i ostatecznie zostaną one dodane.
Ujęte mogą zostać w końcu nie tylko hieroglify i różne, historyczne języki indoeuropejskie, lecz także
wybrane pisma artystyczne, jak tengwar, cirth i klingoński. UCS obejmuje również wiele symboli
graficznych, typograficznych, matematycznych i naukowych, dostarczanych z TeX-em, PostScriptem, APL-em,
MS-DOS-em, Macintoshem oraz fontami OCR i wieloma innymi systemami przetwarzania tekstów, a wciąż
dodawane są nowe.
Standard UCS (ISO 10646) opisuje zestaw znaków o architekturze 31-bitowej składający się ze 128
24-bitowych grup, z których każda dzieli się na 256 16-bitowych płaszczyzn złożonych z 256 8-bitowych
wierszy z 256 kolumnami, po jednej na każdy znak. Pierwsza część standardu (ISO 10646-1) definiuje
pierwsze 65534 pozycji (0x0000 do 0xfffd), która składa się na podstawową płaszczyznę wielojęzyczną (BMP)
- ang. Basic Multilingual Plane, która jest 0. płaszczyzną w grupie 0. Druga część standardu (ISO
10646-2) dodaje znaki do grupy zerowej poza BMP w wielu płaszczyznach uzupełniających, w zakresie od
0x10000 do 0x10ffff. Nie istnieją plany dodawania znaków poza 0x10ffff do standardu, zatem z całej
przestrzeni kodu jedynie niewielka część grupy 0. może być kiedykolwiek faktycznie użyta w przewidywalnej
przeszłości. BMP zawiera wszystkie znaki, które można znaleźć powszechnie w innych zestawach znaków.
Płaszczyzny uzupełniające, dodane w ISO 10646-2 obejmują jedynie bardziej egzotyczne znaki o specjalnym
zastosowaniu naukowym, do wydruku słowników, wydawnictw, wysokopoziomowych protokołów i potrzeb
entuzjastów.
Reprezentacja każdego znaku UCS jako 2-bajtowe słowo jest nazywana postacią UCS-2 (tylko znaki BMP),
podczas gdy UCS-4 jest reprezentacją każdego znaku jako słowo 4-bajtowe. Dodatkowo, istnieją dwie
postacie kodowania: UTF-8 w celu kompatybilności wstecznej z programami przetwarzającymi ASCII i UTF-16,
w celu kompatybilnej obsługi znaków spoza BMP - aż do 0x10ffff, przez programy UCS-2.
Znaki UCS 0x0000 do 0x007f są identyczne z tymi w klasycznym zestawie znaków US-ASCII, a znaki w zakresie
0x000 do 0x00ff są identyczne z tymi w zestawie znaków ISO 8859-1 Latin-1.
Znaki składające
Niektóre punkty kodowe w UCS zostały przypisane do znaków składających. Podobne są one do niespacyjnych
klawiszy akcentów na maszynie do pisania. Znak składający dodaje akcent do poprzedniego znaku.
Najważniejsze znaki akcentowane mają osobne kody w UCS, jednak mechanizm znaków składających pozwala
dodawać akcenty i inne znaki diakrytyczne do każdego znaku. Znaki składające zawsze następują po znaku,
który modyfikują. Dla przykładu, niemiecki znak A-umlaut ("Latin capital letter A with diaeresis") może
być przedstawiony za pomocą bądź to istniejącego już złożonego znaku UCS o kodzie 0x00c4, bądź
alternatywnie jako kombinacja zwykłych znaków "Latin capital letter A" i "combining diaeresis": 0x0041
0x0308.
Znaki składające są istotne na przykład do kodowania pisma tajskiego lub do składu zapisu matematycznego
oraz użytkowników międzynarodowego alfabetu fonetycznego (IPA).
Poziomy implementacji
Ponieważ należy się spodziewać, że nie wszystkie systemy będą obsługiwać zaawansowane mechanizmy w
rodzaju składania znaków, ISO 10646-1 określa następujące trzy poziomy implementacji UCS:
Poziom 1 Nieobsługiwane są znaki składane i Hangul Jamo (specjalne, bardziej skomplikowane kodowanie
pisma koreańskiego, w którym sylaby Hangul są kodowane jako dwa lub trzy podznaki).
Poziom 2 Oprócz zastrzeżeń poziomu 1, obsługiwane są znaki składające w przypadku języków, dla których są
one istotne (np. tajski, lao, hebrajski, arabski, dewanagari, malajski).
Poziom 3 Obsługiwane są wszystkie znaki UCS.
Unicode 3.0 Standard opublikowany przez Unicode Consortium zawiera dokładnie UCS Basic Multilingual Plane
(płaszczyznę podstawową) w poziomie implementacji 3, zgodnie z ISO 10646-1:2000. Unicode 3.1 dodaje
płaszczyzny uzupełniające z ISO 10646-2. Standard Unikodu i dokumenty techniczne opublikowane przez
Unicode Consortium zawierają wiele dodatkowych informacji o semantyce i zalecanym użyciu różnych znaków.
Dostarczają wskazania i algorytmy do edytowania, sortowania, porównywania, normalizowania, konwertowania
i wyświetlania łańcuchów Unikodu.
Unikod w systemie Linux
W systemie GNU/Linux, typ C wchar_t jest 32-bitową liczbą typu integer ze znakiem. Jej wartość są
interpretowane przez bibliotekę C, zawsze jako wartości kodu UCS (we wszystkich ustawieniach locale), a
ta konwencja jest sygnalizowana przez bibliotekę GNU C w stosunku do aplikacji, przez zdefiniowane stałej
__STDC_ISO_10646__, zgodnie ze standardem ISO C99.
UCS/Unikod może być używany identycznie jak ASCII w łańcuchach wejścia/wyjścia, komunikacji terminalowej,
plikach tekstowych, nazwach plików i zmiennych środowiskowych w wielobajtowym kodowaniu UTF-8
kompatybilnym z ASCII. Aby zasygnalizować używanie kodowania znaków UTF-8 wszystkim aplikacjom, należy
wybrać odpowiednie locale za pomocą zmiennych środowiskowych (np. "LANG=pl_PL.UTF-8").
Funkcja nl_langinfo(CODESET) zwraca nazwę wybranego kodowania. Funkcje biblioteczne, takie jak wctomb(3)
i mbsrtowcs(3) mogą być używane do przekształcenia wewnętrznych znaków i łańcuchów wchar_t na kodowanie
znaków systemowych i z powrotem, a wcwidth(3) informuje, jak wiele pozycji (0–2) kursor przesunął się
przez wyświetlenie znaku.
Obszar prywatny - PUA (ang. Private Use Areas)
W Basic Multilangual Plane, kodom z zakresu 0xe000 do 0xf8ff nigdy nie zostaną przypisane znaki; są one
zarezerwowane do użytku prywatnego. Dla społeczności Linuksowej ów obszar prywatny został dalej
podzielony na zakres od 0xe000 do 0xefff, którego może używać indywidualnie każdy użytkownik, oraz strefę
linuksową w zakresie 0xf000 do 0xf8ff, której rozszerzanie podlega koordynacji pomiędzy wszystkimi
użytkownikami Linuksa. Rejestr znaków przypisanych do strefy Linuksowej utrzymuje obecnie H. Peter Anvin
<Peter.Anvin@linux.org>
Kolejne dwie płaszczyzny zarezerwowane do użytku prywatnego to płaszczyzna 15 (dodatkowy obszar użytku
prywatnego A - ang. Supplementary Private Use Area-A, w zakresie 0xf0000 do 0xffffd) oraz 16 (dodatkowy
obszar użytku prywatnego B - ang. Supplementary Private Use Area-B, w zakresie 0x100000 do 0x10fffd).
Literatura
* 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, Genewa, 2000.
Jest to oficjalna specyfikacja UCS. Dostępna z 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.
Dobra książka-informator języka programowania C. Czwarte wydanie obejmuje także 1 Poprawkę do
standardu ISO C90, która dodaje znaczną liczbę nowych funkcji bibliotecznych C do obsługi szerokich i
wielobajtowych zestawów znaków, ale nie opisuje ISO C99, jeszcze bardziej poprawiającej obsługę znaków
szerokich i wielobajtowych.
* Unicode Technical Reports.
http://www.unicode.org/reports/
* Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
http://www.cl.cam.ac.uk/~mgk25/unicode.html
* Bruno Haible: Unicode HOWTO.
http://www.tldp.org/HOWTO/Unicode-HOWTO.html
ZOBACZ TAKŻE
locale(1), setlocale(3), charsets(7), utf-8(7)
O STRONIE
Angielska wersja tej strony pochodzi z wydania 4.05 projektu Linux man-pages. Opis projektu, informacje
dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem
https://www.kernel.org/doc/man-pages/.
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Gwidon S. Naskrent (PTM)
<naskrent@hoth.amu.edu.pl> i Michał Kułach <michal.kulach@gmail.com>.
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie
http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 4.05 oryginału.
GNU 2016-03-15 UNICODE(7)