Unicode

Logo Unikodu

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

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

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ść

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

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ść

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

  • 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

  • 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

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. 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 af (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, 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, 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ż

Przypisy

  1. Unicode Standard, unicode.org [dostęp 2022-03-25].
  2. Diana, Members, Unicode [dostęp 2022-03-25] (ang.).
  3. Technical Introduction, www.unicode.org [dostęp 2022-03-25].
  4. Glossary, unicode.org [dostęp 2022-03-25].
  5. Introduction to Unicode, mathias.gaunard.com [dostęp 2022-03-25].
  6. Unicode Mail List Archive: Re: Origin of the U+nnnn notation, unicode.org [dostęp 2022-03-25].
  7. FAQ – UTF-8, UTF-16, UTF-32 & BOM, unicode.org [dostęp 2022-03-25].
  8. HTML UTF-8 Reference, www.w3schools.com [dostęp 2022-03-25] (ang.).
  9. Skład osobowy, web.archive.org, 13 sierpnia 2019 [dostęp 2022-03-25] [zarchiwizowane z adresu 2019-08-13].
  10. a b Unicode, unikod, rjp.pan.pl [dostęp 2022-03-25].
  11. Ogonki w Unikodzie, www.unikod.pl [dostęp 2022-03-25].
  12. a b What is Unicode? in Polish, unicode.org [dostęp 2022-03-25].
  13. [ Domeny – IDN ] Czym jest Unikod?, dawne.az.pl [dostęp 2022-03-25].
  14. Re: Unicode vs. Unikod from Martin J. Dürst via Unicode on 2017-04-11 (Unicode Mail List Archive), unicode.org [dostęp 2022-03-25].
  15. Unicode, [w:] Encyklopedia PWN [online] [dostęp 2022-03-25].
  16. Usage Survey of Character Encodings broken down by Ranking, w3techs.com [dostęp 2022-03-25].
  17. 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ń.
  18. wydanie wersji 5.1.0 standardu.
  19. Unicode 12.1.0, unicode.org [dostęp 2019-08-02].
  20. Unicode 13.0.0, unicode.org [dostęp 2020-05-22].
  21. https://www.unicode.org/versions/Unicode14.0.0/.
  22. a b c How to Input Unicode, xahlee.info [dostęp 2020-03-18] [zarchiwizowane z adresu 2019-09-14].

Linki zewnętrzne

Media użyte na tej stronie

New Unicode logo.svg
Unicode logo used on the Unicode Consortium website launched on 17 July 2019 (https://home.unicode.org/). Replaces the red Unicode logo.svgUnicode logo.svg with different typeface for the word "Unicode" that was used on the old website.