Najlepsze pytania
Chronologia
Czat
Perspektywa
UTF-16
Z Wikipedii, wolnej encyklopedii
Remove ads
UTF-16 (ang. 16-bit Unicode Transformation Format) – jeden ze sposobów kodowania znaków standardu Unicode. Sposób ten wymaga użycia szesnastobitowych słów, przy czym dla znaków na pozycjach poniżej U+10f (dziesiętnie 65536), a dokładnie w zakresach od U+0000 do U+D7FF i U+E000 do U+FFFF, używane jest jedno słowo, którego wartość odpowiada dokładnie pozycji znaku w standardzie.
W systemach Windows kodowanie to jest najczęściej używane do wewnętrznego przechowywania komunikatów Unicode[1].
Remove ads
Kodowanie na 4 bajtach
Podsumowanie
Perspektywa
Dla znaków z wyższych pozycji używa się dwóch słów, pierwsze z nich należy do przedziału od U+D800 do U+DBFF, drugie natomiast od U+DC00 do U+DFFF. Oznacza to, iż znaki z zakresu od U+10000 do U+10FFFF kodowane są w następujący sposób:
- od numeru znaku odejmowane jest 0x10000, tak aby pozostała 20-bitowa liczba z zakresu od 0 do 0xFFFFF;
- wartość tworzona przez najstarsze 10 bitów tej liczby jest dodawana do 0xD800 i otrzymuje się bardziej znaczące 16-bitowe słowo z zakresu od 0xD800 do 0xDBFF;
- pozostałe 10 młodszych bitów jest dodawane do 0xDC00, co daje mniej znaczące 16-bitowe słowo z zakresu od 0xDC00 do 0xDFFF.
Kodowanie to przedstawia poniższa tabela:
Na przykład znak o kodzie U+10000 zostanie zamieniony na sekwencję 0xD800 0xDC00, zaś znak o kodzie 0x10FFFF (górna granica unikodu) na 0xDBFF 0xDFFF. W standardzie Unicode pozycjom z przedziału od U+D800 do U+DFFF nie są przypisane żadne znaki, zatem każda sekwencja słów kodowych jest interpretowana jednoznacznie.
Remove ads
Przykład
- Odjęcie
0x10000
od0x10437
daje w wyniku0x00437
, czyli binarnie0000 0000 0100 0011 0111
. - Rozdzielenie powstałego ciągu 20 bitów na dwie grupy, po 10 bitów każda
0000000001
0000110111
. - Dodanie
0xD800
do pierwszej wartości:0xD800
+0x0001
=0xD801
. - Dodanie
0xDC00
do drugiej wartości:0xDC00
+0x0037
=0xDC37
. - W ten sposób rezultatem są cztery bajty w postaci
D8 01 DC 37
.
Poniższa tabela pozwala zrozumieć sposób kodowana różnej długości numerów kodowych Unicode w UTF-16. Dodatkowe bity dodane przez kodowanie pokazane są na czarno
Remove ads
Zobacz też
Przypisy
Linki zewnętrzne
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads