回答編集履歴

3

Windowsメモ帳の出力が間違っていたので修正

2018/04/25 07:45

投稿

tacsheaven
tacsheaven

スコア13703

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

各符号化における「あ」のコードを例示。エンディアンについて補足

2018/04/25 07:45

投稿

tacsheaven
tacsheaven

スコア13703

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

誤字修正

2018/04/25 07:33

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  このいくつもの方式として、
14
14
 
15
- * UTF-8 (1byte~6byteまでの可変長で1文字を表す)
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」と表現するので、ここを押さえておかないと混乱します。