teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

推敲

2021/01/27 15:14

投稿

68user
68user

スコア2060

answer CHANGED
@@ -5,10 +5,29 @@
5
5
 
6
6
  その後、全然文字数足らんじゃないかと騒動になり文字集合が 32ビットとなった。
7
7
 
8
- これまでの符号化方式をなかったことにするわけにはいかない、とはいえ 16ビットでは
8
+ これまでの符号化方式をなかったことにするわけにはいかない、とはいえ
9
- 収まらない。なので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16
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

推敲

2021/01/27 15:14

投稿

68user
68user

スコア2060

answer CHANGED
@@ -5,7 +5,9 @@
5
5
 
6
6
  その後、全然文字数足らんじゃないかと騒動になり文字集合が 32ビットとなった。
7
7
 
8
+ これまでの符号化方式をなかったことにするわけにはいかない、とはいえ 16ビットでは
8
- 当然 16ビットでは収まらないので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16 と呼びましょうという話になった。
9
+ 収まらない。なので符号化方式に無理やりサロゲートペアを追加したが、それを UTF-16
10
+ と呼びましょうということにした (ここではじめて文字集合と符号化方式のコード体系が分かれた)。
9
11
 
10
12
  UTF-8 や UTF-32 は 32ビット化騒動以降にできたものなので、サロゲートペアというしくみはない。
11
13
 

1

推敲

2021/01/27 15:06

投稿

68user
68user

スコア2060

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