回答編集履歴
3
推敲
answer
CHANGED
@@ -5,10 +5,29 @@
|
|
5
5
|
|
6
6
|
その後、全然文字数足らんじゃないかと騒動になり文字集合が 32ビットとなった。
|
7
7
|
|
8
|
-
これまでの符号化方式をなかったことにするわけにはいかない、とはいえ
|
8
|
+
これまでの符号化方式をなかったことにするわけにはいかない、とはいえ
|
9
|
-
収まらない。なので符号化方式に無理やりサロゲートペアを
|
9
|
+
16ビットでは収まらない。なので符号化方式に無理やりサロゲートペアを
|
10
|
+
追加したが、それを UTF-16と呼びましょうということにした (ここで
|
10
|
-
|
11
|
+
はじめて文字集合と符号化方式のコード体系が分かれた)。
|
11
12
|
|
12
|
-
UTF-8 や UTF-32 は 32ビット化騒動以降にできたものなので、
|
13
|
+
UTF-8 や UTF-32 は 32ビット化騒動以降にできたものなので、
|
14
|
+
サロゲートペアという変なしくみはない。
|
13
15
|
|
16
|
+
ちなみに UCS-4(文字集合) と UTF-8 (符号化方式) の対応はこんな感じです。
|
17
|
+
```
|
18
|
+
UCS-4 (16進数) UTF-8 (2進数)
|
19
|
+
----------------- ---------------------------------------
|
20
|
+
00000000-0000007F 0xxxxxxx
|
21
|
+
00000080-000007FF 110xxxxx 10xxxxxx
|
22
|
+
00000800-0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
|
23
|
+
00010000-001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
24
|
+
```
|
25
|
+
16進数の 7 は 3bit、F は 4bit で表現できるので、
|
26
|
+
例えば UCS-4 の 000007FF は 3bit+4bit+4bit=11bit。
|
27
|
+
対する右側 2進数の x の個数は 11個なので、11bit。
|
28
|
+
|
29
|
+
よって、UCS-4 のビットを少々移動するだけで UTF-8 になります。
|
30
|
+
これが UTF-8 にはサロゲートペアという変な仕組みはない、ということです。
|
31
|
+
|
32
|
+
|
14
33
|
以上、お詳しい方がみたら怒られそうな不正確な表現がたくさんあると思いますので、雰囲気だけお感じいただければと思います。
|
2
推敲
answer
CHANGED
@@ -5,7 +5,9 @@
|
|
5
5
|
|
6
6
|
その後、全然文字数足らんじゃないかと騒動になり文字集合が 32ビットとなった。
|
7
7
|
|
8
|
+
これまでの符号化方式をなかったことにするわけにはいかない、とはいえ 16ビットでは
|
8
|
-
|
9
|
+
収まらない。なので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16
|
10
|
+
と呼びましょうということにした (ここではじめて文字集合と符号化方式のコード体系が分かれた)。
|
9
11
|
|
10
12
|
UTF-8 や UTF-32 は 32ビット化騒動以降にできたものなので、サロゲートペアというしくみはない。
|
11
13
|
|
1
推敲
answer
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
その後、全然文字数足らんじゃないかと騒動になり文字集合が 32ビットとなった。
|
7
7
|
|
8
|
-
当然 16ビットでは収まらないので無理やりサロゲートペアを追加したが、それを UTF-16 と呼びましょうという話
|
8
|
+
当然 16ビットでは収まらないので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16 と呼びましょうという話になった。
|
9
9
|
|
10
10
|
UTF-8 や UTF-32 は 32ビット化騒動以降にできたものなので、サロゲートペアというしくみはない。
|
11
11
|
|