Przejdź do zawartości

Unicode

Z Wikipedii, wolnej encyklopedii
(Przekierowano z Unikod)
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

[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:

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 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 (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]
  1. Unicode Standard [online], unicode.org [dostęp 2022-03-25].
  2. Diana, Members [online], Unicode [dostęp 2022-03-25] (ang.).
  3. Technical Introduction [online], www.unicode.org [dostęp 2022-03-25].
  4. Glossary [online], unicode.org [dostęp 2022-03-25].
  5. Introduction to Unicode [online], mathias.gaunard.com [dostęp 2022-03-25].
  6. Unicode Mail List Archive: Re: Origin of the U nnnn notation [online], unicode.org [dostęp 2022-03-25].
  7. FAQ – UTF-8, UTF-16, UTF-32 & BOM [online], unicode.org [dostęp 2022-03-25].
  8. HTML UTF-8 Reference [online], www.w3schools.com [dostęp 2022-03-25] (ang.).
  9. Skład osobowy [online], web.archive.org, 13 sierpnia 2019 [dostęp 2022-03-25] [zarchiwizowane z adresu 2019-08-13].
  10. a b Unicode, unikod [online], rjp.pan.pl [dostęp 2022-03-25].
  11. Ogonki w Unikodzie [online], www.unikod.pl [dostęp 2022-03-25].
  12. a b What is Unicode? in Polish [online], unicode.org [dostęp 2022-03-25].
  13. [ Domeny – IDN ] Czym jest Unikod? [online], 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) [online], unicode.org [dostęp 2022-03-25].
  15. Unicode, [w:] Encyklopedia PWN [online], Wydawnictwo Naukowe PWN [dostęp 2022-03-25].
  16. Usage Survey of Character Encodings broken down by Ranking [online], 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 [online], unicode.org [dostęp 2019-08-02].
  20. Unicode 13.0.0 [online], unicode.org [dostęp 2020-05-22].
  21. Unicode 14.0.0 [online], unicode.org [dostęp 2024-04-26] (ang.).
  22. 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]