utf-8

UTF-8(7)		 Linux - prirucka programatora		      UTF-8(7)



JMENO
       UTF-8 - vicebytove Unicode kodovani, kompatibilni s ASCII

POPIS
       Znakova	sada  Unicode  je  16 bitova. Nejbeznejsi kodovani (zname jako
       UCS-2) je sekvenci 16-bitovych slov. Retezce z takovychto slov obsahuji
       mnoho  8-bitovych  znaku	 jako  je  '\0' nebo '/', ktere maji specialni
       vyznam v jmenech souboru a i ve argumentech  funkci  jazyka  C.	Navic,
       naprosta	 vetsina  UNIXovych  nastroju  ocekava ASCII soubory a nemohou
       cist 16-bitove znaky bez vyznamnych zmen kodu.  Z  techto  duvodu  neni
       UCS-2  vhodnym kodovanim Unicode ve jmenech souboru, v textovych soubo-
       rech, environmentu atd.	ISO 10646 Universal Character  Set  (UCS),  je
       nadmnozinou  Unicode,  zabira  31-bitovy	 prostor  jehoz kodovani UCS-4
       (sekvence 32-bitovych slov) ma tytez problemy.

       Kodovani UTF-8 pro Unicode a UCS tyto problemy nema,  a	proto  vytvari
       cestu,  jak   vyuzivat  Unicode	v  Unixovych  (a podobnych) operacnich
       systemech.

VLASTNOSTI
       Kodovani UTF-8 ma nekolik peknych vlastnosti:

       * znaky UCS 0x00000000 to  0x0000007f  (bezne  znaky  US-ASCII  )  jsou
	 kodovany  jako	 byty 0x00 az 0x7f (kompatibilni s ASCII). To znamena,
	 soubory a retezce, obsahujici	pouze  7-bitove	 ASCII	jsou  kodovany
	 stejne v ASCII i v UTF-8.

       * Vsechny  znaky	 UCS > 0x7f jsou kodovany jako sekvence bytu v rozmezi
	 od 0x80 do 0xfd, takze se zde neobjevi zadny znak ASCII  ani  nevzni-
	 kaji problemy se znaky jako '\0' nebo '/'.

       * Lexikograficke usporadani znaku z UCS-4 se zachovava.

       * Libovolnou z 2^31 kombinaci UCS lze zakodovat pomoci UTF-8.

       * Kody 0xfe a 0xff nejsou pouzity v kodovani UTF-8 .

       * Prvni byte vicebytove sekvence reprezentujici jeden ne-ASCII znak UCS
	 je vzdy v intervalu 0xc0 az 0xfd a indikuje, jak dlouha  je  sekvence
	 bytu.	 Vsechny  nasledujici  byty  jsou v rozmezi 0x80 az 0xbf. Toto
	 umoznuje jednoduchou resynchronizaci pri vypadku bytu(u), protoze  se
	 jedna o bezstavove kodovani.

       * UTF-8	koduje	znaky UCS az do sestibytovych sekvenci, ackoli Unicode
	 znaky mohou  byt  nejvyse  tribytove.	Protoze	 Linux	pouziva	 pouze
	 16-bitovy  Unicode  jako  podmnozinu UCS, mohou byt UTF-8 viceznakove
	 sekvence dlouhe nejvyse 3 byty.

KODOVANI
       Nasledujici sekvence jsou pouzity pro reprezentovani znaku. Typ pouzite
       sekvence zavisi na kodu UCS daneho 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

       The  xxx pozice jsou zaplneny bity z kodu znaku v binarni reprezentaci.
       Vzdy je pouzita nejkratsi mozna sekvence pro dany znak.

PRIKLADY
       Znak Unicode
	0xa9 = 1010 1001 (copyright) je kodovan v UTF-8 jako:

	      11000010 10101001 = 0xc2 0xa9

       a znak 0x2260 = 0010 0010 0110 0000 (neni rovno) je kodovan 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>

VIZ TEZ
       unicode(7)



Linux			       17. cervence 1998		      UTF-8(7)

Personal Tools