Introdução
Com o advento dos primeiros dispositivos para transmissão digital de informações e computadores eletrônicos, surgiu o problema de codificação de caracteres de texto em sequências de uns e zeros. A unidade mínima de apresentação de informações é o byte. Com base nisso, em 1963, nos Estados Unidos, a tabela de códigos ASCII (código padrão americano para intercâmbio de informações) foi desenvolvida, padronizada e posteriormente expandida, utilizando uma codificação de 8 bits. Em primeiro lugar, com a ajuda dessa tabela, ele deveria codificar números e letras do idioma inglês. Os primeiros 128 caracteres da tabela são mostrados na Fig. 1:
O número da célula na tabela (Fig. 1) é o código do símbolo. Como exemplo, considere codificar a palavra Hello. Os números das células na tabela ASCII em que as letras estão localizadas: 72 (H), 101 (e), 108 (l), 111 (o). A palavra código em representação binária se parece com isto:
00010 010 ( H ) 10100 110 ( e ) 00110 110 ( l ) 00110 110 ( l ) 11110 110 ( o ) ( bit mais significativo à direita ).
Os códigos sublinhados e em negrito na representação binária correspondem aos números das células na tabela (Fig. 1). O algoritmo de geração de código é o seguinte:
1. – (). 010 – , 011 – .
2. – .
, 128 ASCII , . 128 (8 256 ) . , , 8 .
Unicode () – , ( ) . , ( ) .
.
« » UCS (Universal Coded Character Set), ISO/IEC 10646. UCS , , .
, .. , , UTF (Unicode Transformation Format): UTF-8, UTF-16 UTF-32
UTF-8 – , : 8, 16, 24 32.
UTF-16 – , :16 32.
UTF-8 UTF-16 UCS.
UTF-8
RFC (Request For Comments) 3629. RFC:
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xx 10xxxxxx 10xxxxxx 10xxxxxx
. ( ):
0 – 8- ,
110 – 16- ,
1110 – 24- ,
11110 – 32 .
– 10 – ( ), .
128 ASCII. 1040-1103.
« Hello».
( ):
00001011 11111001 () 00001011 00001101 () 00001011 11111101 () 00001011 00001101 () 00000100 () 00010010 (H) 10100110 (e) 00110110 (l) 00110110 (l) 11110110 (o).
1055, 10000011111 – 11 . 110 – 10 – . Hello 1 , ASCII.
UTF-8 , , , , .
UTF-16
2000 RFC 2781, UTF-16, 16 32 . 0-55295 57344-65535 16 ( ), , 16, 32 . « Hello».
( ):
11111000 00100000 () 00001100 001000000 () 11111100 00100000 () 00001100 001000000 () 00000100 00000000 () 00010010 00000000 (H) 10100110 00000000 (e) 00110110 00000000 (l) 00110110 00000000 (l) 111110110 00000000 (o).
16 , .
, 65535. , .2:
– 68620 (010COC).
UTF-16 :
010000. 20 . : 010COC – 0x10000 = 0xC0C.
10 10 . 00 , 00000000110000001100, 10 , – 10 .
0xD800 (11011000 00000000) 003 (00000000 00000011), 10 , . 0xD800 + 003 = 0D803 (11011000 00000011) – 16 UTF-16.
0xDC00 (11011000 00000000) 00C (00000000 00001100), 10 , №2. 0xD00 + 00 = D0 (11011100 00001100) – 16 UTF-16.
UTF-16, , , 3 4: 0D803DC0C (11011000 00000011 11011100 00001100).
UTF-8 UTF-16 ,
1.
1. .
|
0-127 |
128 - 2047 |
2048-32767 |
32768-65535 |
65535- 1048575 |
1048575-… |
UTF-8 |
8 |
16 |
24 |
32 |
32 |
_ |
UTF-16 |
16 |
16 |
16 |
16 |
32 |
32 |
1 , . , 128-2047, 65535-1048575 UTF-8 UTF-16 . 0-127 UTF-8, , , . 2048-32767 32768-65535 UTF-16, , , ( 12549-12589). , , 1048575 UTF-16.
« Hello» UTF-8 UTF-16. UTF-8 14 , UTF-16 20 , - 000. , , UTF-8.
: UTF-8, UTF-16. UTF-8, , .
, , . 12549-12589 , , UTF-16 . , , , . – button. - , . :
1. , , . , , , .
2. . , . UTF-16. .
3. , -, – , – . , , , , .
, . , ü , , 252 : u, 117 ¨, 776. . , . , u, , ü, u.