utf 8 7






UTF-8(7) Podręcznik Programisty Linuxowego UTF-8(7)


NAZWA
UTF-8 - kompatybilne z ASCII wielobajtowe kodowanie
Unikodowe

OPIS
Zestaw znaków Unicode zajmuje szesnastobitową przestrzeń
kodową. Najprostsze kodowanie Unikodowe (znane jako UCS-2
) składa się z sekwencji słów szesnastobitowych. Takie
łańcuchy mogą zawierać jako część wielu znaków 16-bitowych
znaki takie jak '\0' lub '/', które mają specjalne znacze
nie w nazwach plików i innych parametrach funkcji z bib
lioteki C. Dodatkowo, większość narzędzi UNIXowych
spodziewa się plików ASCII i nie potrafi bez znacznych
modyfikacji czytać słów 16-bitowych jako znaków. Z tych
powodów UCS-2 nie jest pożądanym zewnętrznym kodowaniem
Unicode w nazwach plików, plikach tekstowych, zmiennych
środowiskowych itd. ISO 10646 Universal Character Set
(UCS) , podzbiór Unicode, zajmuje nawet przestrzeń
31-bitową i oczywiste dlań kodowanie UCS-4 (sekwencja słów
32-bitowych) stwarza te same problemy.

Kodowanie UTF-8 dla Unicode i UCS nie posiada tych prob
lemów i jest słuszną metodą używania zestawu znaków Uni
code w systemach operacyjnych wzorowanych na UNIXie.

WŁAŚCIWOŚCI
Kodowanie UTF-8 ma następujące przydatne właściwości:

* UCS znaki 0x00000000 do 0x0000007f (klasyczne znaki US-
ASCII ) zakodowane są po prostu jako bajty 0x00 do 0x7f
(kompatybilność z ASCII). Oznacza to że pliki i łańcuchy
które zawierają tylko siedmiobitowe znaki ASCII mają
takie samo kodowanie i w ASCII i w UTF-8

* Wszystkie znaki UCS > 0x7f zakodowane są jako wielobaj
towa sekwencja składająca się tylko z bajtów w zakresie
0x80 do 0xfd, tak więc żadne bajty ASCII nie moga się
pojawić jako część innego znaku, i nie występują tam
problemy z np.

* Zachowany jest leksykograficzny porządek sortowania
łańcuchów w UCS-4

* Za pomocą UTF-8 można zakodować wszystkie możliwe 2^31
kody UCS.

* Bajty 0xfe i 0xff nie są nigdy używane w kodowaniu UTF-8

* Pierwszy bajt sekwencji wielobajtowej który reprezentuje
pojedynczy znak UCS nie-ASCII zawsze zawiera się w
zakresie 0xc0 do 0xfd i wskazuje jak długa jest owa sek
wencja. Wszystkie pozostałe bajty w wielobajtowej sek
wencji zawierają się w zakresie od 0x80 do 0xbf. Pozwala
to na łatwą resynchronizację i sprawia że kodowanie jest



Linux 20 września 1998 1





UTF-8(7) Podręcznik Programisty Linuxowego UTF-8(7)


niezależne od stanu [systemu], oraz odporne na brakujące
bajty.

* Znaki UCS zakodowane w UTF-8 mogą mieć długość do
sześciu bajtów, jakkolwiek znaki Unicode mogą mieć tylko
trzy bajty. Ponieważ Linux używa tylko 16-bitowego
podzbioru Unicode UCS w Linuksie wielobajtowe sekwencje
UTF-8 mogą mieć tylko jeden, dwa lub trzy bajty.

KODOWANIE
Następujące sekwencje bajtów używane są do reprezentacji
znaku: sekwencja które należy użyć zależy od numeru kodu
UCS znaku.

0x00000000 - 0x0000007F:
0xxxxxxx

0x00000080 - 0x000007FF:
110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF:
1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

0x00200000 - 0x03FFFFFF:
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

0x04000000 - 0x7FFFFFFF:
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Pozycje bitowe xxx zostają wypełnione bitami numeru kodu
znaku w reprezentacji dwójkowej. Może zostać użyta tylko
najkrótsza możliwa wielobajtowa sekwencja które może
reprezentować kod numeru danego znaku.

PRZYKŁADY
Znak Unicode 0xa9 = 1010 1001 (znak copyright) kodowany
jest w UTF-8 jako

11000010 10101001 = 0xc2 0xa9

a znak 0x2260 = 0010 0010 0110 0000 (symbol "nie równa
się") kodowany jest jako:

11100010 10001001 10100000 = 0xe2 0x89 0xa0

STANDARDY
ISO 10646, Unicode 1.1, XPG4, Plan 9.

AUTOR
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>




Linux 20 września 1998 2





UTF-8(7) Podręcznik Programisty Linuxowego UTF-8(7)


ZOBACZ TAKŻE
unicode(7)























































Linux 20 września 1998 3





Wyszukiwarka

Podobne podstrony:
UTF
UTF 8 ćw 1
utf 8 hodowla ciągła drobnoustrojów 1
utf 8 hodowla periodyczna d robnoustrojów 2007 2008 1
UTF 8 EKON Zast Mat Wykład 4b 5
UTF 8 EKON Zast Mat Wykład 9
UTF 8 EKON Zast Mat Wykład 7 2
UTF 8 EKON Zast Mat Wykład 3b 4a
UTF 8 LOG0 zagadnienia i opracowanie(FINAL)

więcej podobnych podstron