unicode(7) Miscellaneous Information Manual unicode(7) NAZWA unicode - zunifikowany zestaw znakow OPIS Miedzynarodowy standard ISO/IEC 10646 definiuje miedzynarodowy zestaw znakow - Universal Character Set (UCS). UCS zawiera wszelkie znaki wszelkich innych zestawow znakow. Gwarantuje on rowniez kompatybilnosc na okraglo, tj. budowanie takich tablic konwersji, ze podczas konwersji lancucha z jednego kodowania na UCS i z powrotem nie jest tracona zadna informacja. UCS zawiera znaki wymagane do przedstawienia praktycznie wszystkich znanych jezykow. Obejmuje to nie tylko pismo lacinskie, greckie, hebrajskie, arabskie, armenskie, gruzinskie i cyrylice, lecz takze ideogramy chinskie, japonskie oraz koreanskie Han, jak rowniez nastepujace: hiragana, katakana, hangul, dewanagari, bengalskie, gurmukji, gujarati, oriya, tamil, telugu, kannada, malajlamski, tajski, lao, kmerski, bopomofo, tybetanski, runiczne, etiopskie, kanadyjskie sylabiczne, cherokee, mongolskie, oghamskie, myanmar, sinhala, thaana, yi i inne. Nad pismami, ktore nie zostaly jeszcze uwzglednione, trwaja prace nad najlepszym ich zakodowaniem do uzytku komputerowego i ostatecznie zostana one dodane. Ujete moga zostac w koncu nie tylko hieroglify i rozne, historyczne jezyki indoeuropejskie, lecz takze wybrane pisma artystyczne, jak tengwar, cirth i klingonski. UCS obejmuje rowniez 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 tekstow, a wciaz dodawane sa nowe. Standard UCS (ISO/IEC 10646) opisuje zestaw znakow o architekturze 31-bitowej skladajacy sie ze 128 24-bitowych grup, z ktorych kazda dzieli sie na 256 16-bitowych plaszczyzn zlozonych z 256 8-bitowych wierszy z 256 kolumnami, po jednej na kazdy znak. Pierwsza czesc standardu (ISO /IEC 10646-1) definiuje pierwsze 65534 pozycji (0x0000 do 0xfffd), ktora sklada sie na podstawowa plaszczyzne wielojezyczna (BMP) - ang. Basic Multilingual Plane, ktora jest 0. plaszczyzna w grupie 0. Druga czesc standardu (ISO/IEC 10646-2) dodaje znaki do grupy zerowej poza BMP w wielu plaszczyznach uzupelniajacych, w zakresie od 0x10000 do 0x10ffff. Nie istnieja plany dodawania znakow poza 0x10ffff do standardu, zatem z calej przestrzeni kodu jedynie niewielka czesc grupy 0. moze byc kiedykolwiek faktycznie uzyta w przewidywalnej przeszlosci. BMP zawiera wszystkie znaki, ktore mozna znalezc powszechnie w innych zestawach znakow. Plaszczyzny uzupelniajace, dodane w ISO/IEC 10646-2 obejmuja jedynie bardziej egzotyczne znaki o specjalnym zastosowaniu naukowym, do wydruku slownikow, wydawnictw, wysokopoziomowych protokolow i potrzeb entuzjastow. Reprezentacja kazdego znaku UCS jako 2-bajtowe slowo jest nazywana postacia UCS-2 (tylko znaki BMP), podczas gdy UCS-4 jest reprezentacja kazdego znaku jako slowo 4-bajtowe. Dodatkowo, istnieja dwie postacie kodowania: UTF-8 w celu kompatybilnosci wstecznej z programami przetwarzajacymi ASCII i UTF-16, w celu kompatybilnej obslugi znakow spoza BMP - az do 0x10ffff, przez programy UCS-2. Znaki UCS 0x0000 do 0x007f sa identyczne z tymi w klasycznym zestawie znakow US-ASCII, a znaki w zakresie 0x000 do 0x00ff sa identyczne z tymi w zestawie znakow ISO/IEC 8859-1 (Latin-1). Znaki skladajace Niektore punkty kodowe w UCS zostaly przypisane do znakow skladajacych. Podobne sa one do niespacyjnych klawiszy akcentow na maszynie do pisania. Znak skladajacy dodaje akcent do poprzedniego znaku. Najwazniejsze znaki akcentowane maja osobne kody w UCS, jednak mechanizm znakow skladajacych pozwala dodawac akcenty i inne znaki diakrytyczne do kazdego znaku. Znaki skladajace zawsze nastepuja po znaku, ktory modyfikuja. Dla przykladu, niemiecki znak A-umlaut ("Latin capital letter A with diaeresis") moze byc przedstawiony za pomoca badz to istniejacego juz zlozonego znaku UCS o kodzie 0x00c4, badz alternatywnie jako kombinacja zwyklych znakow "Latin capital letter A" i "combining diaeresis": 0x0041 0x0308. Znaki skladajace sa istotne na przyklad do kodowania pisma tajskiego lub do skladu zapisu matematycznego oraz uzytkownikow miedzynarodowego alfabetu fonetycznego (IPA). Poziomy implementacji Poniewaz nalezy sie spodziewac, ze nie wszystkie systemy beda obslugiwac zaawansowane mechanizmy w rodzaju skladania znakow, ISO/IEC 10646-1 okresla nastepujace trzy poziomy implementacji UCS: Poziom 1 Nieobslugiwane sa znaki skladane i Hangul Jamo (specjalne, bardziej skomplikowane kodowanie pisma koreanskiego, w ktorym sylaby Hangul sa kodowane jako dwa lub trzy podznaki). Poziom 2 Oprocz zastrzezen poziomu 1, obslugiwane sa znaki skladajace w przypadku jezykow, dla ktorych sa one istotne (np. tajski, lao, hebrajski, arabski, dewanagari, malajski). Poziom 3 Obslugiwane sa wszystkie znaki UCS. Unicode 3.0 Standard opublikowany przez Unicode Consortium zawiera dokladnie UCS Basic Multilingual Plane (plaszczyzne podstawowa) w poziomie implementacji 3, zgodnie z ISO/IEC 10646-1:2000. Unicode 3.1 dodaje plaszczyzny uzupelniajace z ISO/IEC 10646-2. Standard Unikodu i dokumenty techniczne opublikowane przez Unicode Consortium zawieraja wiele dodatkowych informacji o semantyce i zalecanym uzyciu roznych znakow. Dostarczaja wskazania i algorytmy do edytowania, sortowania, porownywania, normalizowania, konwertowania i wyswietlania lancuchow Unikodu. Unikod w systemie Linux W systemie GNU/Linux, typ C wchar_t jest 32-bitowa liczba typu integer ze znakiem. Jej wartosc sa interpretowane przez biblioteke C, zawsze jako wartosci kodu UCS (we wszystkich ustawieniach locale), a ta konwencja jest sygnalizowana przez biblioteke GNU C w stosunku do aplikacji, przez zdefiniowane stalej __STDC_ISO_10646__, zgodnie ze standardem ISO C99. UCS/Unikod moze byc uzywany identycznie jak ASCII w lancuchach wejscia/wyjscia, komunikacji terminalowej, plikach tekstowych, nazwach plikow i zmiennych srodowiskowych w wielobajtowym kodowaniu UTF-8 kompatybilnym z ASCII. Aby zasygnalizowac uzywanie kodowania znakow UTF-8 wszystkim aplikacjom, nalezy wybrac odpowiednie locale za pomoca zmiennych srodowiskowych (np. "LANG=pl_PL.UTF-8"). Funkcja nl_langinfo(CODESET) zwraca nazwe wybranego kodowania. Funkcje biblioteczne, takie jak wctomb(3) i mbsrtowcs(3) moga byc uzywane do przeksztalcenia wewnetrznych znakow i lancuchow wchar_t na kodowanie znakow systemowych i z powrotem, a wcwidth(3) informuje, jak wiele pozycji 0-2) kursor przesunal sie przez wyswietlenie znaku. Obszar prywatny - PUA (ang. Private Use Areas) W Basic Multilangual Plane, kodom z zakresu 0xe000 do 0xf8ff nigdy nie zostana przypisane znaki; sa one zarezerwowane do uzytku prywatnego. Dla spolecznosci Linuksowej ow obszar prywatny zostal dalej podzielony na zakres od 0xe000 do 0xefff, ktorego moze uzywac indywidualnie kazdy uzytkownik, oraz strefe linuksowa w zakresie 0xf000 do 0xf8ff, ktorej rozszerzanie podlega koordynacji pomiedzy wszystkimi uzytkownikami Linuksa. Rejestr znakow przypisanych do strefy Linuksowej jest zarzadzany przez LANANA, a sam rejestr jest plikiem Documentation/admin-guide/unicode.rst w zrodlach jadra Linux (lub Documentation/unicode.txt w wersji jadra starszej niz 4.10). Kolejne dwie plaszczyzny zarezerwowane do uzytku prywatnego to plaszczyzna 15 (dodatkowy obszar uzytku prywatnego A - ang. Supplementary Private Use Area-A, w zakresie 0xf0000 do 0xffffd) oraz 16 (dodatkowy obszar uzytku prywatnego B - ang. Supplementary Private Use Area-B, w zakresie 0x100000 do 0x10fffd). Literatura o 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. Dostepna z . o The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5. o S. Harbison, G. Steele. C: A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3. Dobra ksiazka-informator jezyka programowania C. Czwarte wydanie obejmuje takze 1 Poprawke do standardu ISO C90, ktora dodaje znaczna liczbe nowych funkcji bibliotecznych C do obslugi szerokich i wielobajtowych zestawow znakow, ale nie opisuje ISO C99, jeszcze bardziej poprawiajacej obsluge znakow szerokich i wielobajtowych. o Unicode Technical Reports. o Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux. o Bruno Haible: Unicode HOWTO. ZOBACZ TAKZE locale(1), setlocale(3), charsets(7), utf-8(7) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Gwidon S. Naskrent i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 28 stycznia 2024 r. unicode(7)