回答編集履歴
3
Windowsメモ帳の出力が間違っていたので修正
test
CHANGED
@@ -24,11 +24,11 @@
|
|
24
24
|
|
25
25
|
Linux や Mac の世界では、UTF-8 が一般的です(XML も UTF-8 であることが前提となっています)。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと混乱します。
|
26
26
|
|
27
|
-
※Windows の「メモ帳」の「Unicodeテキスト」は、UTF-16BE です
|
28
|
-
|
29
27
|
|
30
28
|
|
31
29
|
さらにいうと、UTF-16 と UTF-32 には、エンディアン(多バイトを表すストリームの場合に、どちらが上位バイトになるかを決める)が絡みます。古くからの慣習に従い、Big Endian と Little Endian になっていますが、特にプロトコルなどで強制しない場合は Big Endian であると仮定されます。(明示的にエンディアンを表すための Byte Order Mark もあります)
|
30
|
+
|
31
|
+
※Windows の「メモ帳」の「Unicode」はUTF-16LE、「Unicode big endian」はUTF-16BE です
|
32
32
|
|
33
33
|
|
34
34
|
|
2
各符号化における「あ」のコードを例示。エンディアンについて補足
test
CHANGED
@@ -23,3 +23,25 @@
|
|
23
23
|
といったものがあります。実際に文字コードとして意識するのは、こちらの方です。
|
24
24
|
|
25
25
|
Linux や Mac の世界では、UTF-8 が一般的です(XML も UTF-8 であることが前提となっています)。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと混乱します。
|
26
|
+
|
27
|
+
※Windows の「メモ帳」の「Unicodeテキスト」は、UTF-16BE です
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
さらにいうと、UTF-16 と UTF-32 には、エンディアン(多バイトを表すストリームの場合に、どちらが上位バイトになるかを決める)が絡みます。古くからの慣習に従い、Big Endian と Little Endian になっていますが、特にプロトコルなどで強制しない場合は Big Endian であると仮定されます。(明示的にエンディアンを表すための Byte Order Mark もあります)
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
「あ」は、
|
36
|
+
|
37
|
+
Unicode: U+3042
|
38
|
+
|
39
|
+
UTF-16: 0x3042 (Unicodeで U+0000~U+FFFF は、UTF-16 と同じコードになる)
|
40
|
+
|
41
|
+
UTF-16BE: 0x3042(UTF-16 は未指定なので Big Endian となります)
|
42
|
+
|
43
|
+
UTF-16LE:0x4230(Little Endian だと順番が逆になる)
|
44
|
+
|
45
|
+
UTF-8: 0xE38182
|
46
|
+
|
47
|
+
となります。
|
1
誤字修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
このいくつもの方式として、
|
14
14
|
|
15
|
-
* UTF-8 (1byte~
|
15
|
+
* UTF-8 (1byte~4byteまでの可変長で1文字を表す)
|
16
16
|
|
17
17
|
* UTF-16 (2byte で1文字を表す。ただし基本多言語面以外はサロゲートペアを使って4byteで表す)
|
18
18
|
|
@@ -22,4 +22,4 @@
|
|
22
22
|
|
23
23
|
といったものがあります。実際に文字コードとして意識するのは、こちらの方です。
|
24
24
|
|
25
|
-
Linux や Mac の世界では、UTF-8 が一般的です。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと
|
25
|
+
Linux や Mac の世界では、UTF-8 が一般的です(XML も UTF-8 であることが前提となっています)。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと混乱します。
|