Unicode (formalnie Unicode Standard[1], pol. Unikod) – komputerowy standard kodowania zestawu znaków obejmującego litery większości używanych na świecie pism, a także symboli, emoji i kodów formatowania. Standard Unicode rozwijany jest przez konsorcjum Unicode, składające się z firm wytwarzających sprzęt komputerowy, producentów oprogramowania oraz instytutów naukowych, agencji międzynarodowych i grup użytkowników[2]. Konsorcjum współpracuje z organizacją ISO.
W odróżnieniu od standardów takich jak ISO 10646, oprócz kodowania znaków publikacje konsorcjum Unicode dostarczają również wiele szczegółów o systemach pisma i sposobie ich wyświetlania: reguły normalizacji, dekompozycji, kolacjonowania, renderowania i dwukierunkowej kolejności wyświetlania dla tekstów wielojęzycznych. Zawierają również referencyjne pliki danych i wykresy wizualne, które pomagają deweloperom poprawnie zaimplementować standard Unicode[3].
Architektura
[edytuj | edytuj kod]Standard Unicode definiuje przestrzeń kodową (ang. codespace), która jest zbiorem wartości numerycznych (ang. code points) od 0 do 10FFFF w systemie szesnastkowym[4]. Wszystkie znaki Unicode zostają przypisane do jednej z wartości numerycznych przestrzeni kodowej i nazwane według wzoru U+0000, gdzie 0000 jest wartością numeryczną znaku[5]. Zapis wartości w tym systemie musi zawierać co najmniej cztery cyfry – gdy wartość numeryczna znaku jest mniejsza, na jej początek zostają przypisane zera[6]. Przykładowo, znak dzielenia posiada wartość numeryczną F7 i jest zapisywany jako U+00F7, natomiast znak jednego z egipskich hieroglifów o wartości numerycznej 13254 zostaje zapisany bez żadnych modyfikacji jako U+13254.
Metody kodowania
[edytuj | edytuj kod]Istnieje kilka metod zapisywania wartości numerycznych znaków Unicode jako ich bajtowe odpowiedniki w systemach komputerowych. Rozróżnia się między systemami mapowania UCS (Universal Character Set) i UTF (Unicode Transformation Format), które dzielą się na podgrupy zależne od ilości bajtów potrzebnej do zapisania jednego znaku[7].
Do najpowszechniejszych metod bajtowego kodowania znaków należą:
Mniej popularnymi kodowaniami Unicode są:
Istnieją również inne kodowania, stanowiące margines lub pozostające na etapie propozycji, na przykład:
- UTF-9 i UTF-18
- UTF-EBCDIC
- UTF-6
- UTF-5.
Kompatybilność
[edytuj | edytuj kod]Standard Unicode zsynchronizowany jest ze standardem ISO 10646, stosując te same wartości numeryczne dla poszczególnych znaków. Zapis binarny tekstu ASCII jest również kompatybilny z metodą zapisu znaków Unicode UTF-8[8].
Nazewnictwo
[edytuj | edytuj kod]Według ogłoszonej w 2005 roku wypowiedzi Andrzeja Blikle, członka Rady Języka Polskiego na stanowisku przewodniczącego Zespołu Terminologii Informatycznej[9], sugeruje się używanie nazwy Unikod nie tylko jako określenie stworzonego przez konsorcjum Unicode standardu, ale również wszystkich pozostałych systemów unifikacji liter[10]. Stosując taką definicję, Unikodem byłby również między innymi standard ISO 10646. Proponowana terminologia nie upowszechniła się jednak w sposób prawidłowy i słowo Unikod najczęściej służy jako spolszczenie słowa Unicode, a nie odrębne pojęcie w dziedzinie informatyki[11][12][13], prawdopodobnie przez podobieństwo obu nazw. Również sama strona internetowa konsorcjum Unicode używa Unikodu jako polskiego tłumaczenia Unicode[12], co w 2017 roku spotkało się z krytyką Janusza S. Bienia[14]. Słowo Unikod nie znajduje się w Encyklopedii PWN, w przeciwieństwie do słowa Unicode[15]. Ponieważ pierwotna wypowiedź Andrzeja Blikle stanowiła zaledwie zalecenie[10], dokładna definicja słowa Unikod pozostaje niejasna.
Powszechność
[edytuj | edytuj kod]Standard Unicode jest dominującym systemem kodowania znaków, a UTF-8 jego najpowszechniejszą implementacją, używany wewnętrznie w systemach operacyjnych takich jak Unix, Windows czy macOS. W roku 2020 używało go około 98% stron internetowych[16].
Historia standardu
[edytuj | edytuj kod]- 1991 Unicode 1.0.0 (październik[17])
- 1993 Unicode 1.1.0 (czerwiec[17])
- 1996 Unicode 2.0.0 (lipiec[17])
- 1998 Unicode 2.1.2 (maj[17])
- 1998 Unicode 2.1.5 (sierpień[17])
- 1998 Unicode 2.1.8 (grudzień[17])
- 1999 Unicode 2.1.9 (kwiecień[17])
- 1999 Unicode 3.0.0 (wrzesień[17])
- 2000 Unicode 3.0.1 (sierpień[17])
- 2001 Unicode 3.1.0 (23 marca)
- 2001 Unicode 3.1.1 (sierpień[17])
- 2002 Unicode 3.2.0 (25 marca)
- 2003 Unicode 4.0.0 (17 kwietnia)
- 2004 Unicode 4.0.1 (marzec[17])
- 2005 Unicode 4.1.0 (31 marca[17])
- 2006 Unicode 5.0.0 (4 lipca[17]) (ogłoszenie prasowe: 18 lipca)
- 2008 Unicode 5.1.0 (15 marca) (ogłoszenie prasowe: 4 kwietnia[18])
- 2009 Unicode 5.2.0 (1 października[17])
- 2010 Unicode 6.0.0 (11 października[17]), m. in. start standaryzacji emoji
- 2012 Unicode 6.1.0 (31 stycznia[17])
- 2012 Unicode 6.2.0 (26 września[17])
- 2013 Unicode 6.3.0 (30 września[17])
- 2014 Unicode 7.0 (16 czerwca)
- 2015 Unicode 8.0 (17 czerwca)
- 2016 Unicode 9.0 (czerwiec)
- 2017 Unicode 10.0 (czerwiec)
- 2018 Unicode 11.0 (czerwiec)
- 2019 Unicode 12.0 (5 marca)
- 2019 Unicode 12.1 (7 maja[17][19])
- 2020 Unicode 13.0 (10 marca[17][20])
- 2021 Unicode 14.0 (wrzesień)[21]
Relacje do UCS
[edytuj | edytuj kod]- Unicode 1.1 ISO/IEC ≈ 10646-1:1993
- Unicode 3.0 ISO/IEC ≈ 10646-1:2000
- Unicode 3.2 ISO/IEC ≈ 10646-2:2001
- Unicode 4.0 ISO/IEC ≈ 10646:2003
- Unicode 5.0 ISO/IEC ≈ 10646:2003/Amd.2:2006
- Unicode 5.1 ISO/IEC ≈ 10646:2003/Amd.4:2008
- Unicode 5.2 ISO/IEC ≈ 10646:2003/Amd.6:2009
- Unicode 6.0 ISO/IEC ≈ 10646:2010
- Unicode 6.1 ISO/IEC ≈ 10646:2012
Wstawianie znaków Unicode
[edytuj | edytuj kod]Klawiatura komputerowa udostępnia tylko znaki ze strony kodowej właściwej dla ustawionego języka klawiatury. W przypadku polskiej klawiatury będzie to strona kodowa CP852 i Windows-1250 (kodowanie polskich znaków). Wszystkie znaki z tych stron można wprowadzić za pomocą alt-kodów. Do wprowadzania znaków niedostępnych przez alt-kody można użyć jednej z poniższych metod:
- W systemie Windows NT, Mac OS X (od wersji 10.2) oraz w licznych dystrybucjach Linuksa (ze środowiskiem graficznym) dostępna jest tablica znaków, w której można wyszukać potrzebny znak, skopiować go do schowka, a następnie wkleić w program. W systemach Windows 95, 98 i ME tablica znaków nie daje dostępu do wszystkich znaków Unicode.
- Znając numer pozycji znaku (czy to dziesiętny, czy to szesnastkowy), można wprowadzić ten znak na kilka sposobów (nie wszystkie programy obsługują wszystkie opisane tu sposoby):
- Trzymając naciśnięty (lewy) Alt i wpisując z klawiatury numerycznej numer dziesiętny tego znaku, po czym zwolnić klawisz Alt[22].
- Wpisać numer szesnastkowy tego znaku, a następnie wcisnąć kombinację (lewy) Alt+X[22]. Przed numerem szesnastkowym nie może być cyfra ani litera z zakresu a–f (gdyż zostaną uznane jako część kodu, ewentualnie należy poprzedzić kod np. spacją lub uzupełnić kod wiodącymi zerami, tak by liczył dokładnie sześć pozycji).
- Trzymając naciśnięty (lewy) Alt, nacisnąć klawisz plus z klawiatury numerycznej, wpisać numer szesnastkowy znaku, po czym zwolnić klawisz Alt. Metoda ta działa w systemie Windows XP i nowszych.
- Trzymając naciśnięte klawisze Ctrl+⇧ Shift, wpisać numer szesnastkowy znaku, a następnie puścić klawisze. Metoda ta działa w środowisku GNOME. Od wersji GTK+ 2.10 należy nacisnąć Ctrl+⇧ Shift+U, wprowadzić kod szesnastkowy znaku, nacisnąć ↵ Enter[22].
Istnieją też programy do tworzenia własnych układów klawiatur (np. Microsoft Keyboard Layout Creator), dzięki nim można podpiąć dowolny znak Unicode pod dowolną kombinację klawiszy (najczęściej wykorzystywana jest kombinacja AltGr+klawisz, gdzie AltGr to prawy klawisz Alt). Niektóre programy dla Windows pozwalają jedynie na wprowadzanie z klawiatury znaków istniejących w stronie kodowej właściwej dla języka klawiatury, np. w przypadku polskiego systemu Windows próba wpisania kombinacją AltGr+klawisz znaku nieistniejącego w stronie kodowej Windows-1250 nie da oczekiwanego efektu.
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ Unicode Standard [online], unicode.org [dostęp 2022-03-25] .
- ↑ Diana, Members [online], Unicode [dostęp 2022-03-25] (ang.).
- ↑ Technical Introduction [online], www.unicode.org [dostęp 2022-03-25] .
- ↑ Glossary [online], unicode.org [dostęp 2022-03-25] .
- ↑ Introduction to Unicode [online], mathias.gaunard.com [dostęp 2022-03-25] .
- ↑ Unicode Mail List Archive: Re: Origin of the U+nnnn notation [online], unicode.org [dostęp 2022-03-25] .
- ↑ FAQ – UTF-8, UTF-16, UTF-32 & BOM [online], unicode.org [dostęp 2022-03-25] .
- ↑ HTML UTF-8 Reference [online], www.w3schools.com [dostęp 2022-03-25] (ang.).
- ↑ Skład osobowy [online], web.archive.org, 13 sierpnia 2019 [dostęp 2022-03-25] [zarchiwizowane z adresu 2019-08-13] .
- ↑ a b Unicode, unikod [online], rjp.pan.pl [dostęp 2022-03-25] .
- ↑ Ogonki w Unikodzie [online], www.unikod.pl [dostęp 2022-03-25] .
- ↑ a b What is Unicode? in Polish [online], unicode.org [dostęp 2022-03-25] .
- ↑ [ Domeny – IDN ] Czym jest Unikod? [online], dawne.az.pl [dostęp 2022-03-25] .
- ↑ Re: Unicode vs. Unikod from Martin J. Dürst via Unicode on 2017-04-11 (Unicode Mail List Archive) [online], unicode.org [dostęp 2022-03-25] .
- ↑ Unicode, [w:] Encyklopedia PWN [online], Wydawnictwo Naukowe PWN [dostęp 2022-03-25] .
- ↑ Usage Survey of Character Encodings broken down by Ranking [online], w3techs.com [dostęp 2022-03-25] .
- ↑ a b c d e f g h i j k l m n o p q r s t Daty publikacji poszczególnych wydań.
- ↑ wydanie wersji 5.1.0 standardu.
- ↑ Unicode 12.1.0 [online], unicode.org [dostęp 2019-08-02] .
- ↑ Unicode 13.0.0 [online], unicode.org [dostęp 2020-05-22] .
- ↑ Unicode 14.0.0 [online], unicode.org [dostęp 2024-04-26] (ang.).
- ↑ a b c How to Input Unicode [online], xahlee.info [dostęp 2020-03-18] [zarchiwizowane z adresu 2019-09-14] .
Linki zewnętrzne
[edytuj | edytuj kod]- Konsorcjum Unicode – oficjalna strona Unicode
- Konsorcjum Unicode – tablice kodowe znaków
- Tablica znaków Unicode – numerycznie dziesiętna
- DecodeUnicode – baza wiki znaków Unicode
- Unicode Technical Report #36 – aspekty bezpieczeństwa związane z programowaniem Unicode
- Unikod.Pl – polska witryna o Unikodzie