Provided by: manpages-pl_0.5-1_all bug

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.

       Generalnie, w systemie Linux powinien być używany jedynie poziom 1 implementacji  BMP.  Część  emulatorów
       terminala  UTF-8  i  fontów  ISO 10646 obsługuje również do dwóch znaków składających na znak w przypadku
       określonych pism, w szczególności: tajskiego (poziom 2), ale ogólnie  rzecz  biorąc  powinno  się  używać
       gotowych znaków, tam gdzie są tylko dostępne (Unikod nazywa to Normalization Form C).

   Obszar prywatny
       W  BMP,  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>

   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 jako plik PDF na CD-ROM-ie ze strony 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/unicode/reports/

       * Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
         http://www.cl.cam.ac.uk/~mgk25/unicode.html

         Zawiera informacje o subskrypcji listy  dyskusyjnej  linux-utf8,  która  jest  najlepszym  miejscem  do
         szukania porad na temat używania Unikodu w systemie Linux.

       * Bruno Haible: Unicode HOWTO.
         ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html

BŁĘDY

       Gdy ta strona podręcznika była aktualizowana po raz ostatni, obsługa locale UTF-8 w bibliotece GNU C była
       już  dojrzała,  podobnie jak obsługa XFree86, która również była zaawansowana, ale wciąż trwały prace nad
       programami (głównie edytorami), aby umożliwić im używanie locale UTF-8. Obecnie, obsługa UCS  w  systemie
       Linux  obejmuje  zwykle  znaki  CJK  o  podwójnej  szerokości,  a niekiedy nawet proste nakładanie znaków
       składających, lecz nie obejmuje najczęściej obsługi pism pisanych  od  prawej  do  lewej  lub  wymaganych
       podstawień  ligatur,  w  pismach  takich  jak  hebrajskie,  arabskie  lub  indyjskie. Pisma te są obecnie
       obsługiwane jedynie w określonych programach z interfejsem graficznym (przeglądarki internetowe,  edytory
       tekstu) z zaawansowanymi silnikami renderowania tekstu.

ZOBACZ TAKŻE

       setlocale(3), charsets(7), utf-8(7)

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  3.52  projektu  Linux man-pages. Opis projektu oraz
       informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://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ą  3.52 oryginału.

GNU                                                2012-08-05                                         UNICODE(7)