前書き
情報および電子コンピュータのデジタル伝送のための最初のデバイスの出現により、1と0のシーケンスを使用してテキスト文字をエンコードするという問題が発生しました。情報表示の最小単位はバイトです。これに基づいて、1963年に米国で、ASCII(情報交換用の米国標準コード)コードテーブルが開発され、標準化され、その後、8ビットエンコーディングを使用して拡張されました。まず第一に、この表の助けを借りて、それは英語の数字と文字をエンコードすることになっていた。表の最初の128文字を図1に示します。
表(図1)のセル番号はシンボルコードです。例として、Helloという単語をエンコードすることを検討してください。文字が配置されているASCIIテーブルのセルの番号:72(H)、101(e)、108(l)、111(o)。バイナリ表現のワードコードは次のようになります。
00010 010(H)10100 110(e)00110 110(l)00110 110(l)11110 110(o)(右側の最上位ビット)。
バイナリ表現で下線が引かれた太字のコードは、表のセル番号に対応しています(図1)。コード生成アルゴリズムは次のとおりです。
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.