Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!

Str. główna i mapa serwisu, kodowanie Base64, kodowanie Quoted-Printable, kodowanie UTF-7, kodowanie UTF-8

Opis kodowania UTF-16

Znaki z BMP

Kodowanie UTF-16 jest bardzo prostą formą reprezentacji znaków z BMP (Basic Multilingual Plane, znaki z zakresu 0 – FFFF). Każdy znak z BMP kodowany jest z użyciem dokładnie dwóch bajtów reprezentujących numer znaku, czyli szesnastkowy numer znaku uzupełniany jest wiodącymi zerami tak, by uzyskać szesnaście bitów. Liczbę taką dzieli się następnie na dwa 8-bitowe bajty, starszy (odpowiadający pierwszym ośmiu bitom licząc od lewej strony) i młodszy.

Znaki spoza BMP

Każdy znak spoza BMP (Basic Multilingual Plane, znaki z zakresu 10000 – 10FFFF) jest kodowany z użyciem dokładnie czterech bajtów. Wykorzystuje się znaki z zakresu D800 – DFFF, przy czym pierwsze dwa bajty kodu zawsze zawierają się w dolnej połowie zakresu (D800 – DBFF), a drugie dwa – w górnej (DC00 – DFFF). Zależność można opisać prostym wzorem matematycznym:

nr znaku = 10000 + (A − D800) × 400 + B − DC00

gdzie:
A – wartość pierwszych dwóch bajtów,
B – wartość drugich dwóch bajtów,
wszystkie wartości szesnastkowe.

Znaki z zakresu D800 – DFFF nie mogą występować samodzielnie; jedyna dopuszczalna postać to znak z dolnego zakresu, po którym bezpośrednio występuje znak z górnego zakresu. Jakiekolwiek odstępstwo od tej reguły oznacza błąd.

Wersje

Kolejne bajty każdego znaku mogą być ułożone w jednej z dwóch kolejności – w odmianie LE (Little Endian) najpierw przesyłany jest młodszy bajt, potem starszy, zaś w odmianie BE (Big Endian) na odwrót. LE czasem nazywany jest „Intel”, a BE – „Motorola”. Konieczne jest więc uprzednie ustalenie lub przesłanie informacji o kolejności bajtów. Informacja zawarta jest w specjalnym znaczniku na samym początku pliku, zwanym BOM (Byte Order Mark, czyli znacznik kolejności bajtów):

Edytory potrafiące zapisywać w kodowaniu UTF-16 normalnie umożliwiają wybór wersji (LE czy BE, i z lub bez BOM). Wersja bez BOM powinna być stosowana wyłącznie w sytuacji, gdy program, dla którego dany plik jest przeznaczony, oczekuje braku BOM; w normalnym obiegu i wymianie dokumentów BOM praktycznie zawsze musi być stosowany.

Przyrost objętości

Pojedynczy znak w UTF-16 kodowany jest z użyciem dwóch bajtów (zasada ta dotyczy tylko znaków z BMP, czyli Basic Multilingual Plane). Sumaryczny przyrost objętości w porównaniu z kodowaniem 8-bitowym wynosi 100%. Znaki spoza BMP są kodowane z użyciem czterech bajtów; znaki te są statystycznie bardzo rzadko używane (również z powodu małego udziału programów z obsługą znaków spoza BMP).

licznik