Unicode (formalnieUnicode Standard[1], pol. Unikod) – komputerowystandard kodowaniazestawu znaków obejmującego litery większości używanych na świeciepism, a także symboli,emoji ikodów formatowania. Standard Unicode rozwijany jest przezkonsorcjum Unicode, składające się z firm wytwarzającychsprzęt komputerowy,producentówoprogramowania 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 jakISO 10646, oprócz kodowania znaków publikacje konsorcjum Unicode dostarczają również wiele szczegółów osystemach 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].
Standard Unicode definiuje przestrzeń kodową (ang.codespace), która jest zbiorem wartości numerycznych (ang.code points) od 0 do 10FFFF wsystemie 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 zegipskich hieroglifów o wartości numerycznej 13254 zostaje zapisany bez żadnych modyfikacji jako U+13254.
Istnieje kilka metod zapisywania wartości numerycznych znaków Unicode jako ichbajtowe odpowiedniki wsystemach komputerowych. Rozróżnia się między systemami mapowaniaUCS (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żą:
Standard Unicode zsynchronizowany jest ze standardemISO 10646, stosując te same wartości numeryczne dla poszczególnych znaków. Zapis binarny tekstuASCII jest również kompatybilny z metodą zapisu znaków UnicodeUTF-8[8].
Według ogłoszonej w 2005 roku wypowiedziAndrzeja Blikle, członkaRady 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 standardISO 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ę wEncyklopedii 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.
Standard Unicode jest dominującym systemem kodowania znaków, aUTF-8 jego najpowszechniejszą implementacją, używany wewnętrznie wsystemach operacyjnych takich jakUnix,Windows czymacOS. W roku 2020 używało go około 98% stron internetowych[16].
Klawiatura komputerowa udostępnia tylko znaki zestrony kodowej właściwej dla ustawionego języka klawiatury. W przypadku polskiej klawiatury będzie to strona kodowaCP852 iWindows-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 wersji10.2) oraz w licznych dystrybucjachLinuksa (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ć klawiszAlt[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 zakresua–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ć klawiszAlt. Metoda ta działa w systemieWindows XP i nowszych.
Trzymając naciśnięte klawiszeCtrl+⇧ Shift, wpisać numer szesnastkowy znaku, a następnie puścić klawisze. Metoda ta działa w środowiskuGNOME. Od wersjiGTK+ 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 kombinacjaAltGr+klawisz, gdzie AltGr to prawy klawiszAlt). Niektóre programy dla Windows pozwalają jedynie na wprowadzanie z klawiatury znaków istniejących wstronie 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 kodowejWindows-1250 nie da oczekiwanego efektu.