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

回答編集履歴

3

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

2018/04/25 07:45

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -11,9 +11,9 @@
11
11
 
12
12
  といったものがあります。実際に文字コードとして意識するのは、こちらの方です。
13
13
  Linux や Mac の世界では、UTF-8 が一般的です(XML も UTF-8 であることが前提となっています)。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと混乱します。
14
- ※Windows の「メモ帳」の「Unicodeテキスト」は、UTF-16BE です
15
14
 
16
15
  さらにいうと、UTF-16 と UTF-32 には、エンディアン(多バイトを表すストリームの場合に、どちらが上位バイトになるかを決める)が絡みます。古くからの慣習に従い、Big Endian と Little Endian になっていますが、特にプロトコルなどで強制しない場合は Big Endian であると仮定されます。(明示的にエンディアンを表すための Byte Order Mark もあります)
16
+ ※Windows の「メモ帳」の「Unicode」はUTF-16LE、「Unicode big endian」はUTF-16BE です
17
17
 
18
18
  「あ」は、
19
19
  Unicode: U+3042

2

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

2018/04/25 07:45

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -10,4 +10,15 @@
10
10
  * UTF-32 (4byte で1文字を表す)
11
11
 
12
12
  といったものがあります。実際に文字コードとして意識するのは、こちらの方です。
13
- Linux や Mac の世界では、UTF-8 が一般的です(XML も UTF-8 であることが前提となっています)。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと混乱します。
13
+ Linux や Mac の世界では、UTF-8 が一般的です(XML も UTF-8 であることが前提となっています)。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと混乱します。
14
+ ※Windows の「メモ帳」の「Unicodeテキスト」は、UTF-16BE です
15
+
16
+ さらにいうと、UTF-16 と UTF-32 には、エンディアン(多バイトを表すストリームの場合に、どちらが上位バイトになるかを決める)が絡みます。古くからの慣習に従い、Big Endian と Little Endian になっていますが、特にプロトコルなどで強制しない場合は Big Endian であると仮定されます。(明示的にエンディアンを表すための Byte Order Mark もあります)
17
+
18
+ 「あ」は、
19
+ Unicode: U+3042
20
+ UTF-16: 0x3042 (Unicodeで U+0000~U+FFFF は、UTF-16 と同じコードになる)
21
+ UTF-16BE: 0x3042(UTF-16 は未指定なので Big Endian となります)
22
+ UTF-16LE:0x4230(Little Endian だと順番が逆になる)
23
+ UTF-8: 0xE38182
24
+ となります。

1

誤字修正

2018/04/25 07:33

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -5,9 +5,9 @@
5
5
  通常 Unicode といった場合は 1. を指します。ですが 2. があるように、「同じ Unicode でも符号化が異なるいくつもの方式がある」のです。
6
6
 
7
7
  このいくつもの方式として、
8
- * UTF-8 (1byte~6byteまでの可変長で1文字を表す)
8
+ * UTF-8 (1byte~4byteまでの可変長で1文字を表す)
9
9
  * UTF-16 (2byte で1文字を表す。ただし基本多言語面以外はサロゲートペアを使って4byteで表す)
10
10
  * UTF-32 (4byte で1文字を表す)
11
11
 
12
12
  といったものがあります。実際に文字コードとして意識するのは、こちらの方です。
13
- Linux や Mac の世界では、UTF-8 が一般的です。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと相互に意味が通らなくなります。
13
+ Linux や Mac の世界では、UTF-8 が一般的です(XML も UTF-8 であることが前提となっています)。ですが Windows においては UTF-16 のことを「Unicode」と表現するので、ここを押さえておかないと混乱します。