UNICODE 139 Jaki rozmiar i jakie kodowanie? Unicode określa jedynie jakiej liczbie odpowiada jaki znak, nie mówi zaś nic o sposobie de- kodowania (tzn. jaka sekwencja znaków odpowiada jakiemu znaku/znakom). Jako że Unicode obejmuje 918 tys. znaków, zmienna zdolna pomieścić go w całości musi mieć przynajmniej 3 bajty. Niestety procesory nie funkcjonują na zmiennych o tym rozmiarze, pracują jedynie na zmiennych o wielkościach: 1, 2, 4 oraz 8 bajtów (kolejne potęgi liczby 2). Dlatego też jeśli wciąż uparcie chcemy być dokładni i zastosować przejrzyste kodowanie musimy skorzystać ze zmiennej 4-bajtowej (32 bity). Tak do sprawy podeszli twórcy kodowania Unicode nazwanego UTF-32/UCS-4. Ten typ kodowania po prostu przydziela każdemu znakowi Unicode kolejne Zobacz w Wikipedii: UTF- 32 liczby. Jest to najbardziej intuicyjny i wygodny typ kodowania, ale jak widać ciągi znaków zakodowane w nim są bardzo obszerne, co zajmuje dostępną pamięć, spowalnia działanie programu oraz drastycznie pogarsza wydajność podczas transferu przez sieć. Poza UTF-32 istnieje jeszcze wiele innych kodowań. Najpopularniejsze z nich to: • UTF-8 — od 1 do 6 bajtów (dla znaków poniżej 65536 do 3 bajtów) na znak przez co jest skrajnie niewygodny, gdy chcemy przeprowadzać jakiekolwiek operacje na tekście bez korzystania z gotowych funkcji • UTF-16 — 2 lub 4 bajty na znak; ręczne modyfikacje łańcucha są bardziej skompliko- wane niż przy UTF-32 • UCS-2 — 2 bajty na znak przez co znaki z numerami powyżej 65 535 nie są uwzględ- nione; równie wygodny w użytkowaniu co UTF-32. Ręczne operacje na ciągach zakodowanych w UTF-8 i UTF-16 są utrudnione, ponieważ w przeciwieństwie do UTF-32, gdzie można określić, iż powiedzmy 2. znak ciągu zajmuje bajty od 4. do 7. (gdyż z góry wiemy, że 1. znak zajął bajty od 0. do 3.), w tych kodowaniach musimy najpierw określić rozmiar 1. znaku. Ponadto, gdy korzystamy z nich nie działają wtedy funkcje udostępniane przez biblioteki C do operowania na ciągach znaków. Priorytet Proponowane kodowania mały rozmiar UTF-8 łatwa i wydajna edycja UTF-32 lub UCS-2 przenośność UTF-83 ogólna szybkość UCS-2 lub UTF-8 Co należy zrobić, by zacząć korzystać z kodowania UCS-2 (domyślne kodowanie dla C): • powinniśmy korzystać z typu wchar t (ang. “wide character”), jednak jeśli chcemy udostępniać kod źródłowy programu do kompilacji na innych platformach, powinniśmy ustawić odpowiednie parametry dla kompilatorów, by rozmiar był identyczny niezależ- nie od platformy.
(…)
… wchar t.
Co należy zrobić, by zacząć korzystać z Unicode:
• gdy korzystamy z kodowań innych niż UTF-16 i UCS-2, powinniśmy zdefiniować własny
typ
• w wykorzystywanych przez nas bibliotekach podajemy typ wykorzystanego kodowania.
• gdy chcemy ręcznie modyfikować ciąg musimy przeczytać specyfikację danego kodowania; są one wyczerpująco opisane na siostrzanym projekcie Wikibooks — Wikipedii.
Przykład użycia…
... zobacz całą notatkę
Komentarze użytkowników (0)