Czym jest Unicode: kompletny przewodnik, zastosowania i kodowania

Ostatnia aktualizacja: 20 sierpnia 2025
  • Unicode przypisuje każdemu znakowi unikalny punkt kodowy i synchronizuje swój repertuar z normą ISO/IEC 10646.
  • Standardy UTF-8, UTF-16 i UTF-32 kodują te same znaki i umożliwiają bezstratną konwersję.
  • Normalizacja, właściwości BiDi i UCD zapewniają spójne porównywanie, porządkowanie i renderowanie.
  • Zastosowanie Unicode (najlepiej UTF-8 w Internecie) zapobiega uszkodzeniom i ułatwia internacjonalizację.

Ogólna ilustracja dotycząca Unicode

Unicode to wspólny język, którym posługują się komputery podczas przetwarzania tekstu : przypisuje on każdemu znakowi i symbolowi unikalny numer z niemal każdego systemu pisma, dzięki czemu dane te można przechowywać, przetwarzać i bezproblemowo udostępniać między platformami i krajami.

Standard ten powstał, aby przezwyciężyć ograniczenia starych zestawów znaków ( zestaw ASCII , strony kodowe, EBCDIC itp.), które nie spełniały oczekiwań lub były ze sobą niekompatybilne. Obecnie jest on zsynchronizowany z normą ISO/IEC 10646, obsługuje algorytmy (takie jak algorytm dwukierunkowy) oraz definiuje właściwości i reguły normalizacji, aby wszystko działało spójnie.

Czym jest Unicode i dlaczego jest tak ważny?

Unicode to uniwersalny i stale rozwijający się standard kodowania znaków , który opisuje każdy znak nazwą, punktem kodowym oraz zestawem właściwości (pismo, kategoria, kierunkowość, wielkość liter itp.). Komitet Techniczny Unicode (UTC), działający w ramach Konsorcjum Unicode, dba o jego zgodność ze standardem ISO/IEC 10646.

Jego celem jest uniwersalność, jednolitość i niepowtarzalność : szeroki repertuar, który umożliwia jednoznaczną wymianę tekstu wielojęzycznego, z jasnymi i powtarzalnymi regułami. Dzięki temu nowoczesne technologie (systemy operacyjne, przeglądarki, XML, Java, bazy danych) mogą łączyć alfabet łaciński i arabski, ideogramy CJK, emoji oraz symbole techniczne i muzyczne w ramach jednego dokumentu.

Znaki, glify i punkty kodowe

W Unicode znak to abstrakcyjna jednostka informacji, a punkt kodowy to jego identyfikator numeryczny . Glif to forma wizualna (to, co widzisz na ekranie), która zależy od czcionki . Pojedynczy znak może mieć wiele glifów, a czasami glif reprezentuje więcej niż jeden znak.

Zwyczajowa notacja punktu kodowego to U+XXXX w systemie szesnastkowym . Przykłady ilustrujące analizowany materiał: mała litera „l” to U+006C, mała litera „ü” to U+00FC, „é” to U+00E9, a grecka beta: wielka litera to U+0392, a mała U+03B2 (w niektórych tekstach „β” jest cytowane z U+0392, ale kod ten odpowiada wielkiej literze „Β”).

Przestrzeń kodów Unicode ma 1 114 112 możliwych pozycji (do U+10FFFF) , zorganizowanych w sposób umożliwiający sklasyfikowanie wszystkich systemów pisma i symboli, z dziesiątkami tysięcy efektywnych i stale rosnących przypisań w każdej wersji.

Plany, obszary i bloki

Unicode dzieli swoją przestrzeń znaków na 17 płaszczyzn, z których każda zawiera do 65 536 punktów kodowych . Taka organizacja ułatwia grupowanie powiązanych skryptów i symboli oraz szybkie wyszukiwanie tego, czego szukasz.

Najważniejsze płaszczyzny : Podstawowa płaszczyzna wielojęzyczna (BMP, płaszczyzna 0) gromadzi niemal wszystkie współczesne alfabety i wiele symboli; Uzupełniająca płaszczyzna wielojęzyczna (SMP, płaszczyzna 1) przechowuje historyczne pisma i symbole techniczne (np. muzyczne i matematyczne); Uzupełniająca płaszczyzna ideograficzna (SIP, płaszczyzna 2) rozszerza ideogramy CJK; płaszczyzna 14 (SSP) zawiera specjalne etykiety; płaszczyzny 15 i 16 są przeznaczone do użytku prywatnego.

Bloki i obszary : mapy są nieformalnie podzielone na obszary, a formalnie na ciągłe bloki. Bloki służą do tabelarycznego ujęcia i dokumentowania znaków, choć nie zawsze odpowiadają one sensownym grupom językowym.

  Jaka jest różnica między nauką a technologią?

Ideogramy CJK i projekt Unihan

Ideogramy wschodnioazjatyckie (Han) są ujednolicone w Unicode, z różnicami stylistycznymi w zależności od regionu , ale wszystkie odnoszą się do tego samego abstrakcyjnego znaku. Ich zarządzaniem zajmuje się Grupa Ideograficzna (IRG), grupa JTC1/SC2/WG2 ISO/IEC, reprezentowana przez Chiny, Japonię, Koreę, Wietnam, Hongkong, Makau, Singapur, USA i inne kraje.

Baza danych Unihan gromadzi informacje pomocnicze (odczyty, znaczenia, ekwiwalencje), które są niezbędne do posługiwania się tymi ideogramami w różnych językach i standardach historycznych lub korporacyjnych.

Główne bloki i rozszerzenia CJK :

  • Zunifikowane ideogramy CJK (BMP, U+4E00–U+9FFF): 20.992 XNUMX powszechnie używanych znaków.
  • Przedłużenie A (BMP, U+3400–U+4DBF): 6.592 rzadziej występujących ideogramów.
  • Rozszerzenia B–H:w SMP/SIP/TIP sumują się one do dziesiątek tysięcy więcej (B: U+20000–U+2A6DF, 42.720 2; C: U+700A2–U+73B4.154F, 2 740; D: U+2B81–U+222B2F, 820; E: U+2B5.762–U+2CEAF, 0 2; F: U+7.473CEB30000–U+3134EBEF, 4.939 31350; G: U+323–U+4.192F, XNUMX XNUMX;
  • Inne powiązane bloki CJK: Radykały Kangxi (U+2F00–U+2FDF), symbole i znaki interpunkcyjne CJK (U+3000–U+303F), formaty zgodności i kompatybilności, suplement ideogramu zgodności itp.

Unicode zakłada, że ​​włączanie ideogramów nie będzie miało ostatecznego końca i przewiduje mechanizmy, takie jak sekwencje opisów ideograficznych, aby reprezentować niezakodowane symbole poprzez rozbicie ich na istniejące komponenty (z zastrzeżeniami: bez kanonicznego rozkładu lub gwarancji w operacjach takich jak wyszukiwanie lub porządkowanie).

Formy kodowania: UTF-8, UTF-16 i UTF-32

Unicode definiuje formy transformacji (UTF), które konwertują punkty kodowe na jednostki pamięci, dzięki czemu oprogramowanie może efektywnie przetwarzać tekst zgodnie z jego kontekstem.

UTF-8 to format kodowania o zmiennej długości, zorientowany bajtowo, zgodny z ASCII w zakresie U+0000–U+007F w jednym bajcie. Obecny standard wykorzystuje od 1 do 4 bajtów na znak; niektóre starsze teksty wspominają o 1–6, ale we współczesnym Unicode jest to 1–4. Jest to dominujący format w internecie.

UTF-16 używa jednostek 16-bitowych

(jedna lub dwie jednostki kodowe na znak) : większość znaków BMP mieści się w jednej jednostce; znaki uzupełniające używają par zastępczych z zakresu U+D800–U+DFFF.

UTF-32 ma stałą długość: 4 bajty na znak, jest prosty, ale wymaga dużo miejsca. Przydatny, gdy istotne jest bezpośrednie indeksowanie znaków, a pamięć nie jest problemem.

Jak rozłożone są bity w UTF-8

Format UTF-8 rozdziela bity punktów kodowych na sekwencje od 1 do 4 bajtów z rozpoznawalnymi nagłówkami, co zapobiega niejednoznacznościom i ułatwia wykrywanie granic znaków.

Zakres Unicode Wzór bitowy Bajtów
U+0000..U+007F 0xxxxxxxx 1
U+0080..U+07FF 110yyyyy 10xxxxxx 2
U+0800..U+FFFF 1110zzzz 10yyyyyy 10xxxxxx 3
U+010000..U+10FFFF 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx 4

Główną zaletą UTF-8 jest to, że eliminuje problemy z kolejnością bajtów (endianizmem) i umożliwia bardzo wydajne przetwarzanie strumieni tekstowych, a także zapewnia wsteczną kompatybilność z ASCII.

Schematy kodowania, kolejność bajtów i BOM

Oprócz formatów UTF, Unicode opisuje schematy serializacji , które rozstrzygają, w jaki sposób bajty są przesyłane między systemami o różnej kolejności bajtów, a także w jaki sposób sygnalizowane są takie aspekty, jak kolejność bajtów.

  • UTF-8: kolejność bajtów nie ma zastosowania. Można ją przenieść Znak kolejności bajtów (BOM) jako wskazówka, chociaż domyślnie nie jest to wymagane ani zalecane.
  • UTF-16:Warianty BE/LE (big-/little-endian) i opcjonalny BOM (jeśli brakuje i nie jest zdefiniowany w protokole, przyjmuje się big-endian).
  • UTF-32:Warianty BE/LE z analogicznymi zasadami; BOM dozwolony jako znak zamówienia.
  Twierdzenie Pitagorasa w życiu codziennym

Istnieją również specyficzne warianty , takie jak UTF-16BE/UTF-16LE i UTF-32BE/UTF-32LE (zgodnie z konwencją bez specyfikacji BOM), a także inne historyczne kodowania zapewniające zgodność, takie jak UTF-7 lub UTF-EBCDIC, oprócz GB18030 (chińskiego odpowiednika UTF-8 z obsługą języka chińskiego uproszczonego i tradycyjnego).

Normalizacja, kompozycja i równoważności

Wiele znaków można przedstawić jako prekomponowane lub jako sekwencje znaków bazowych i łączących . Klasyczne przykłady z poprawionego materiału: prekomponowane „Ä” to U+00C4, natomiast forma rozłożona to „A” (U+0041) + diereza (U+0308). Wietnamskie „ỗ” można przedstawić jako „o” (U+006F) + cyrkumfleks (U+0302) + tylda (U+0303).

Unicode definiuje standardowe formy i dwa rodzaje równoważności : kanoniczną (ta sama podstawowa treść) i kompatybilną (formy, które mogą wydawać się takie same, ale różnią się semantycznie). Standaryzacja zapewnia niezawodne porównywanie ciągów znaków i ogranicza duplikację.

Algorytm dwukierunkowy i znaki specjalne

W przypadku pism pisanych od prawej do lewej, takich jak arabskie czy hebrajskie, Unicode wykorzystuje ustandaryzowany i rozwijany algorytm dwukierunkowy (Bidi) (np. poprawki w wersji 6.3), dzięki czemu mieszane teksty zawierające znaki łacińskie i arabskie są przedstawiane w odpowiedniej kolejności wizualnej.

Klasy punktów kodowych, które powinny być znane na podstawie otrzymanego materiału: znaki graficzne (litery, znaki, symbole), formatowanie (niewidoczne znaki wpływające na przetwarzanie: U+2028 podział wiersza, U+2029 podział akapitu, U+00A0 twarda spacja), dziedziczone kody sterujące dla zgodności (zakresy U+0000–U+001F, U+007F, U+0080–U+009F), użytek prywatny, pozycje zarezerwowane, zamienniki (U+D800–U+DFFF dla UTF-16) i znaki niebędące znakami (U+FFFE, U+FFFF w każdej płaszczyźnie).

Unicode, ISO/IEC 10646 i inne standardy (ASCII, ANSI, strony kodowe)

Unicode jest synchronizowany z ISO/IEC 10646 (UCS) i zachowuje mapowania do poprzednich standardów (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643 itd.), a także rezerwuje miejsca do prywatnego użytku producentów.

ASCII a Unicode : ASCII to 7-bitowy zestaw znaków składający się ze 128 znaków , wystarczający dla podstawowego języka angielskiego, ale niewystarczający dla języków ze znakami diakrytycznymi, ideogramami lub emoji . Unicode obejmuje ponad 140 000 znaków i stale się rozrasta, z kodowaniem 8/16/32-bitowym zgodnie z formatem UTF-12.

ANSI i strony kodowe : „ANSI” zazwyczaj odnosi się do ograniczonych i wzajemnie niekompatybilnych 8-bitowych stron kodowych systemu Windows. Komputer z systemem OEM-Latin II, który otwiera tekst w kodzie IBM EBCDIC-Cyrillic, będzie widział niepoprawne znaki. Unicode rozwiązuje ten problem dzięki pojedynczemu zestawowi znaków i bezstratnej konwersji między własnymi formami.

Implementacja na systemach (Windows, Solaris) i konwersja

System Windows wewnętrznie używa UTF-16 w swoich nowoczesnych interfejsach API i oferuje funkcje takie jak MultiByteToWideChar i WideCharToMultiByte do konwersji między Unicode a stronami kodowymi (SBCS/DBCS/MBCS). Konwersja na stronę kodową może spowodować utratę danych, jeśli nie będzie ona w stanie obsłużyć wszystkich znaków.

Nowe aplikacje w systemie Windows powinny wewnętrznie używać UTF-16 i pozostawić konwersję na krawędziach (wejście/wyjście, protokoły), minimalizując w ten sposób ryzyko wystąpienia błędów. Mimo to system Windows zachowuje zgodność ze stronami kodowymi, gdy jest to nieuniknione.

Zgodnie z poprawioną dokumentacją, Oracle Solaris 11 obsługuje Unicode 6.0 i ISO/IEC 10646:2011 na poziomie systemu, używając UTF-8 jako domyślnego formatu w swoich zestawach parametrów, co eliminuje problemy z kolejnością bajtów i transparentnie zachowuje kodowanie ASCII.

Unicode w praktyce: sieć, dokumenty i programowanie

W internecie powszechnie obsługuje się i przechowuje treści w UTF-8 . W HTML należy zadeklarować '<meta charset="UTF-8">', aby zapewnić zgodność, i w razie potrzeby używać encji szesnastkowych (na przykład: euro '&#x20AC;').

  Komputery HP: najlepsze modele

W programie Word symbole Unicode można łatwo wstawiać, umieszczając kursor w menu Wstaw > Symbol lub wpisując kod i naciskając kombinację klawiszy Alt+X; spowoduje to konwersję wartości na odpowiadający jej znak, zgodnie ze standardową procedurą. Zobacz również listę kodów Alt do wstawiania symboli z klawiatury.

W językach programowania : w Pythonie 3 ciągi znaków są już w formacie Unicode; w Javie i C# można używać znaków ucieczki '\uXXXX'; w HTML, '&#xXXXX;'. Ważne jest, aby edycja, kompilacja i transmisja używały tego samego kodowania, aby uniknąć błędów.

Kopiowanie i wklejanie symboli działa, jeśli cały ciąg znaków jest w Unicode . Jeśli fragmenty używają innego kodowania, mogą pojawić się znaki zapytania, kwadraty lub inne dziwne symbole.

Baza danych znaków (UCD), właściwości i kategorie

Baza Danych Znaków Unicode (UCD) publikuje dla każdego punktu kodowego jego nazwę, kategorię, pismo, właściwości wielkości liter, kierunkowość i inne cechy . Informacje te są niezbędne do prawidłowego działania silników renderujących i przetwarzania tekstu.

Dzięki tym właściwościom różne komponenty i algorytmy (takie jak sortowanie, segmentacja słów czy transformacja wielkich/małych liter) mogą zachowywać się spójnie w przypadku tych samych danych.

Wersje i rozszerzenia standardu: najważniejsze informacje

Unicode rozwija się z każdą wersją , wprowadzając nowe skrypty, symbole i emoji. Do najważniejszych osiągnięć należy wersja 1.0 z 1991 roku z 7.161 znakami oraz kolejne rozszerzenia, które dodały tysiące nowych symboli, ideogramów, emoji i skryptów.

Na przykład w 2022 r . wersja 15.0 dodała 4.192 dodatkowe ideogramy CJK i inne elementy, osiągając łącznie około 149 186 znaków.

Narzędzia do eksploracji tabeli Unicode

Dostępne są bezpłatne narzędzia do wyszukiwania i analizowania znaków : Unibook Character Browser, SYMBL i Branah.com, które umożliwiają wyszukiwanie właściwości, nazw i bloków znaków, ułatwiając programistom i twórcom treści szybkie znalezienie potrzebnych informacji.

Przykłady zastosowań: formularze adresowe, internacjonalizacja i biznes

Umożliwienie użytkownikom wprowadzania adresów w ich własnym języku i alfabecie pomaga ograniczyć liczbę błędów i poprawić komfort użytkowania. Ponadto interoperacyjność Unicode zapobiega problemom z konwersją między różnymi systemami, zachowując integralność tekstu w całym łańcuchu cyfrowym.

Z tego powodu Unicode jest podstawowym elementem gwarantującym, że tekst pozostanie ostateczny w całej infrastrukturze cyfrowej , od formularzy internetowych po systemy baz danych i dokumenty drukowane, niezależnie od tego, czy w tym samym zdaniu użyjesz znaku „ñ”, języka arabskiego, chińskiego czy emoji.

Numerowanie binarne
Podobne artykuły:
Numeracja binarna: Tajny język komputerów