Udostępnij za pośrednictwem


Unicode

Unicode to światowy standard kodowania znaków. System używa formatu Unicode wyłącznie do manipulowania znakami i ciągami. Aby uzyskać szczegółowy opis wszystkich aspektów unicode, zapoznaj się z Standard Unicode.

W porównaniu ze starszymi mechanizmami obsługi danych znaków i ciągów Unicode upraszcza lokalizację oprogramowania i ulepsza wielojęzyczne przetwarzanie tekstu. Używając formatu Unicode do reprezentowania danych znaków i ciągów w aplikacjach, można włączyć uniwersalne funkcje wymiany danych dla globalnego marketingu przy użyciu jednego pliku binarnego dla każdego możliwego kodu znaków. Unicode wykonuje następujące czynności:

  • Umożliwia dowolną kombinację znaków, pochodzących z dowolnej kombinacji skryptów i języków, do współistnienia w jednym dokumencie.
  • Definiuje semantyka dla każdego znaku.
  • Standandaryzuje zachowanie skryptu.
  • Zapewnia standardowy algorytm dla tekstu dwukierunkowego.
  • Definiuje mapowania krzyżowe na inne standardy.
  • Definiuje wiele kodowań swojego zestawu znaków: UTF-7, UTF-8, UTF-16 i UTF-32. Konwersja danych między tymi kodami jest bezstratna.

Kod Unicode obsługuje wiele skryptów używanych przez języki na całym świecie, a także dużą liczbę symboli technicznych i znaków specjalnych używanych w publikowaniu. Obsługiwane skrypty obejmują, ale nie są ograniczone do, łacińskiego, greckiego, cyrylica, hebrajskiego, arabskiego, Devanagari, thai, Han, Hangul, Hiragana i Katakana. Obsługiwane języki to m.in. niemiecki, francuski, angielski, grecki, rosyjski, hebrajski, arabski, hindi, tajski, chiński, koreański i japoński. Obecnie kod Unicode może reprezentować zdecydowaną większość znaków w nowoczesnym użyciu komputera na całym świecie i nadal jest aktualizowany, aby był jeszcze bardziej kompletny.

Funkcje z obsługą formatu Unicode są opisane w Conventions for Function Prototypes. Te funkcje używają kodowania UTF-16 (szerokiego znaku), który jest najczęstszym kodowaniem Unicode i używanym do kodowania natywnego Unicode w systemach operacyjnych Windows. Każda wartość kodu ma szerokość 16 bitów, w przeciwieństwie do starszej strony kodowej podejście do danych znaków i ciągów, które używają wartości kodu 8-bitowego. Użycie 16 bitów umożliwia bezpośrednie kodowanie 65 536 znaków. W rzeczywistości wszechświat symboli używanych do transkrypcji języków ludzkich jest jeszcze większy niż, a punkty kodu UTF-16 w zakresie U+D800 do U+DFFF są używane do tworzenia par zastępczych, które stanowią kodowanie 32-bitowe znaków dodatkowych. Aby uzyskać dalszą dyskusję, zobacz zastępcze i dodatkowe znaki.

Zestaw znaków Unicode zawiera wiele znaków łączących, takich jak U+0308 ("Pst"), łączący dieresis lub umlaut. Unicode może często reprezentować ten sam glyph w postaci "skomponowanej" lub ""dekomposed": na przykład postać składana z "Ä" jest pojedynczym punktem kodu Unicode "Ä" (U+00C4), podczas gdy jego rozłożony formularz to "A" + " Δ" (U+0041 U+0308). Unicode nie definiuje skomponowanego formularza dla każdego glifu. Na przykład małe litery wietnamskie "o" z circumflex i tyldą ("ỗ") są reprezentowane przez U+006f U+0302 U+0303 (o + Circumflex + Tilde). Aby uzyskać dalszą dyskusję na temat łączenia znaków i powiązanych problemów, zobacz Używanie normalizacji Unicode do reprezentowania ciągów.

Aby uzyskać zgodność ze środowiskami 8-bitowymi i 7-bitowymi, Kod Unicode może być również zakodowany odpowiednio jako UTF-8 i UTF-7. Chociaż funkcje z obsługą formatu Unicode w systemie Windows używają formatu UTF-16, istnieje również możliwość pracy z danymi zakodowanymi w formacie UTF-8 lub UTF-7, które są obsługiwane w systemie Windows jako zestaw znaków wielobajtowych stron kodowych.

Nowe aplikacje systemu Windows powinny używać formatu UTF-16 jako wewnętrznej reprezentacji danych. System Windows zapewnia również rozbudowaną obsługę stron kodu, a użycie mieszane w tej samej aplikacji jest możliwe. Nawet nowe aplikacje oparte na standardach Unicode czasami muszą pracować ze stronami kodu. Przyczyny tego problemu omówiono w Code Pages.

Aplikacja może używać funkcji MultiByteToWideChar i WideCharToMultiByte do konwertowania między ciągami opartymi na stronach kodu i ciągach Unicode. Chociaż ich nazwy odnoszą się do "MultiByte", te funkcje działają równie dobrze w przypadku jednobajtowego zestawu znaków (SBCS), zestaw znaków dwubajtowych (DBCS) i stron kodowych zestawu znaków wielobajtowych (MBCS).

Zazwyczaj aplikacja systemu Windows powinna używać formatu UTF-16 wewnętrznie, konwertując tylko jako część "warstwy elastycznej" w interfejsie, który musi używać innego formatu. Ta technika chroni przed utratą i uszkodzeniem danych. Każda strona kodowa obsługuje różne znaki, ale żadna z nich nie obsługuje pełnego spektrum znaków udostępnianych przez unicode. Większość stron kodu obsługuje różne podzestawy, inaczej zakodowane. Strony kodowe dla kodów UTF-8 i UTF-7 są wyjątkiem, ponieważ obsługują kompletny zestaw znaków Unicode, a konwersja między tymi kodowaniami a UTF-16 jest bezstratna.

Dane konwertowane bezpośrednio z kodowania używanego przez jedną stronę kodową do kodowania używanego przez inną stronę podlegają uszkodzeniu, ponieważ ta sama wartość danych na różnych stronach kodu może kodować inny znak. Nawet jeśli aplikacja jest konwertowana tak blisko interfejsu, jak to możliwe, należy dokładnie zastanowić się nad zakresem danych do obsługi.

Dane przekonwertowane ze standardu Unicode na stronę kodową podlegają utracie danych, ponieważ dana strona kodowa może nie być w stanie reprezentować każdego znaku używanego w tych konkretnych danych Unicode. W związku z tym należy pamiętać, że WideCharToMultiByte może utracić dane, jeśli docelowa strona kodowa nie może reprezentować wszystkich znaków w ciągu Unicode.

Podczas modernizacji starszych aplikacji opartych na stronach kodu w celu korzystania z formatu Unicode można użyć funkcji ogólnych i makraTEXTTEXT, aby zachować jeden zestaw źródeł, z których można skompilować dwie wersje aplikacji. Jedna wersja obsługuje kod Unicode, a druga działa ze stronami kodu systemu Windows. Za pomocą tego mechanizmu można konwertować nawet bardzo duże aplikacje ze stron kodu systemu Windows na Unicode przy zachowaniu źródeł aplikacji, które można kompilować, kompilować i testować we wszystkich fazach konwersji. Aby uzyskać więcej informacji, zobacz Conventions for Function Prototypes.

Znaki Unicode i ciągi używają typów danych, które różnią się od tych dla znaków i ciągów opartych na stronie kodu. Wraz z serią makr i konwencji nazewnictwa to rozróżnienie minimalizuje prawdopodobieństwo przypadkowego mieszania dwóch typów danych znaków. Ułatwia sprawdzanie typów kompilatora, aby upewnić się, że tylko wartości parametrów Unicode są używane z funkcjami oczekującymi ciągów Unicode.

zestawy znaków

sortowania

zastępcze i dodatkowe znaki

używanie normalizacji Unicode do reprezentowania ciągów