回答編集履歴

3

推敲

2021/01/27 15:14

投稿

68user
68user

スコア2022

test CHANGED
@@ -12,15 +12,53 @@
12
12
 
13
13
 
14
14
 
15
- これまでの符号化方式をなかったことにするわけにはいかない、とはいえ 16ビットでは
15
+ これまでの符号化方式をなかったことにするわけにはいかない、とはいえ
16
16
 
17
- 収まらない。なので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16
17
+ 16ビットでは収まらない。なので符号化方式に無理やりサロゲートペアを
18
18
 
19
+ 追加したが、それを UTF-16と呼びましょうということにした (ここで
20
+
19
- と呼びましょうということにした (ここではじめて文字集合と符号化方式のコード体系が分かれた)。
21
+ はじめて文字集合と符号化方式のコード体系が分かれた)。
20
22
 
21
23
 
22
24
 
23
- UTF-8 や UTF-32 は 32ビット化騒動以降にできたものなので、サロゲートペアというしくみはない。
25
+ UTF-8 や UTF-32 は 32ビット化騒動以降にできたものなので、
26
+
27
+ サロゲートペアという変なしくみはない。
28
+
29
+
30
+
31
+ ちなみに UCS-4(文字集合) と UTF-8 (符号化方式) の対応はこんな感じです。
32
+
33
+ ```
34
+
35
+ UCS-4 (16進数) UTF-8 (2進数)
36
+
37
+ ----------------- ---------------------------------------
38
+
39
+ 00000000-0000007F 0xxxxxxx
40
+
41
+ 00000080-000007FF 110xxxxx 10xxxxxx
42
+
43
+ 00000800-0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
44
+
45
+ 00010000-001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
46
+
47
+ ```
48
+
49
+ 16進数の 7 は 3bit、F は 4bit で表現できるので、
50
+
51
+ 例えば UCS-4 の 000007FF は 3bit+4bit+4bit=11bit。
52
+
53
+ 対する右側 2進数の x の個数は 11個なので、11bit。
54
+
55
+
56
+
57
+ よって、UCS-4 のビットを少々移動するだけで UTF-8 になります。
58
+
59
+ これが UTF-8 にはサロゲートペアという変な仕組みはない、ということです。
60
+
61
+
24
62
 
25
63
 
26
64
 

2

推敲

2021/01/27 15:14

投稿

68user
68user

スコア2022

test CHANGED
@@ -12,7 +12,11 @@
12
12
 
13
13
 
14
14
 
15
+ これまでの符号化方式をなかったことにするわけにはいかない、とはいえ 16ビットでは
16
+
15
- 当然 16ビットでは収まらないので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16 と呼びましょうという話になった。
17
+ 収まらない。なので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16
18
+
19
+ と呼びましょうということにした (ここではじめて文字集合と符号化方式のコード体系が分かれた)。
16
20
 
17
21
 
18
22
 

1

推敲

2021/01/27 15:06

投稿

68user
68user

スコア2022

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- 当然 16ビットでは収まらないので無理やりサロゲートペアを追加したが、それを UTF-16 と呼びましょうという話なった。
15
+ 当然 16ビットでは収まらないので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16 と呼びましょうという話なった。
16
16
 
17
17
 
18
18