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ł! Do you want to support owner of this site? Click here and donate to his account some amount, he will be able to use it to pay for any of our services, including removing this ad.

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