回答編集履歴
1
文字コードと文字コード体系を分けるよう修正
answer
CHANGED
|
@@ -1,56 +1,49 @@
|
|
|
1
1
|
> ユニコードと文字コードの違いがわからなくて困っています。
|
|
2
2
|
|
|
3
|
+
「文字コード」か「文字コード体系」かで変わりますが、
|
|
3
|
-
同じものですよ。
|
|
4
|
+
文字コード体系との比較なら同じものですよ。
|
|
4
|
-
「文字コード」という規格が沢山あって、その文字コードの1つの規格がユニコードなのです。
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
もっと正確に言えば[文字コード体系](https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89)の規格は沢山あり、ユニコードは文字コードの実装の一つです。
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
コンピュータの世界には0か1かしかありません。
|
|
10
|
-
なのでこの0か1かを大量に使う事で、様々なものを表現するという事を行いました。
|
|
8
|
+
[ASCII](https://ja.wikipedia.org/wiki/ASCII), [ISO-2022-JP](https://ja.wikipedia.org/wiki/ISO-2022-JP), [EUC-JP](https://ja.wikipedia.org/wiki/EUC-JP), [Shift_JIS](https://ja.wikipedia.org/wiki/Shift_JIS)...とまぁ沢山あります。
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
[ユニコード(Unicode)](https://ja.wikipedia.org/wiki/Unicode)は全世界で一つの「文字コード体系」で全ての文字を書き表すというプロジェクトを指します。
|
|
13
|
-
|
|
11
|
+
プロジェクトの結果として作られた文字コード体系はUTF-7, UTF-8, UTF-16, UTF-32などがあります。
|
|
14
|
-
こうしてコンピュータは0〜255の表現に成功しました。
|
|
15
12
|
|
|
16
|
-
コンピュータが発明されたのは英語圏だったので、最初はアルファベットだけで十分でした。
|
|
17
|
-
そして0〜255の番号に1文字ずつ宛てていったのが[ASCII文字](https://msdn.microsoft.com/ja-jp/library/cc392377.aspx)であり、
|
|
18
|
-
|
|
13
|
+
> ユニコードは16進数と聞いたのですが
|
|
19
14
|
|
|
20
|
-
ユニコードはこの考え方を拡張したものです。
|
|
21
|
-
全世界の文字は何万字とあります、特に日本や中国の漢字が一番の曲者でとても255文字では表現しきれません。
|
|
22
|
-
そ
|
|
15
|
+
そのchar型に代入した12345という数値は、内部的に2進数に変換されます。
|
|
23
|
-
|
|
16
|
+
ですので結局は`System.out.println('\u3042');`と同じことを2行に分けているだけです。
|
|
24
|
-
(実際には65536字では足りなかったので、今日ではユニコードは多少下火になっていますが、全世界の殆どの文字列を叩き込めたのでなかなかいい感じです)
|
|
25
17
|
|
|
18
|
+
ユニコード以前に全ての文字コードは16進数が基準です。
|
|
26
|
-
|
|
19
|
+
元々コンピュータの世界には0か1かしかありません。
|
|
20
|
+
なのでこの0か1かを大量に使う事で、様々なものを表現するという事を行いました。
|
|
27
21
|
|
|
28
|
-
数学で習ったかもしれませんが、2進数は8進数や16進数と非常に相性が良いのです。
|
|
29
|
-
|
|
22
|
+
詳しくは下記のサイトを見て下さい。
|
|
30
23
|
|
|
31
|
-
|
|
24
|
+
参考サイト: [【5分で覚えるIT基礎の基礎】コンピュータの仕組み---第2回 2進数の世界](http://tech.nikkeibp.co.jp/it/members/ITPro/ITBASIC/20020515/1/)
|
|
32
|
-
2進数4桁を16進数1桁として取り扱うようになりました。
|
|
33
|
-
これが16進数の由来です。
|
|
34
25
|
|
|
35
|
-
|
|
26
|
+
詳細は割愛しますが、
|
|
36
|
-
|
|
27
|
+
1バイトで表現出来る数値の番地(表)に1つずつ文字を当てはめて出来たものが文字コード体系です。
|
|
37
28
|
|
|
38
|
-
文字コードとはビット列を人間が読む文字に変換したいという試みや、
|
|
39
|
-
ルール決めを指すものですので、文字コードだから16進数というわけじゃないんです。
|
|
40
|
-
|
|
41
29
|
> 文字コードとは日本特有のコードと考えればいいのでしょうか。
|
|
42
30
|
|
|
43
31
|
いいえ違います。
|
|
44
|
-
|
|
32
|
+
質問文のコードには出てきていませんが、何かしらの文字モード体系で行きましょうという取り決めがなされています。
|
|
33
|
+
[Javaが取り扱う文字コード体系](http://d.hatena.ne.jp/cero-t/20110621/1308667569)はUTF-16のようですね。
|
|
45
34
|
|
|
46
|
-
|
|
35
|
+
アルファベットや数値、日本語問わず出力される全ての文字が文字コード体系の表により変換されて表示されます。
|
|
47
|
-
ユニコードは全世界統一を目指して作られた大きな野望を秘めた文字コードの一つです。
|
|
48
36
|
|
|
49
37
|
> また文字コード、ユニコードの表を覚える必要性はあるのでしょうか。
|
|
50
38
|
|
|
39
|
+
ありません。
|
|
51
|
-
貴方
|
|
40
|
+
貴方は12345という数値を使って「あ」を出力するシステムを構築するエンジニアになりたいのですか?
|
|
52
|
-
|
|
41
|
+
そんなニッチな仕組み何処で使うねん!
|
|
53
42
|
|
|
43
|
+
ただ、完全に無いという訳ではありません。
|
|
44
|
+
文字コード体系を作るエンジニア、文字コード体系から各種OSやプログラミング言語用のライブラリを作るエンジニアが存在するからです。
|
|
45
|
+
そういった人間の場合、ある程度の文字ならどの番地にあるかくらいは知っておかないと話になりません。
|
|
46
|
+
|
|
47
|
+
教養として知っておくと得なケースがありますので、覚えておく事に損はありません。
|
|
54
|
-
|
|
48
|
+
しかし、有名な文字コード体系というのは、基本的にはどのパソコンやソフトにもライブラリという形で既に提供されています。
|
|
55
|
-
|
|
49
|
+
普段エンジニアが12345をあに変換したいというケースはまずないと思います。
|
|
56
|
-
基本的にパソコンを扱う一般ユーザーや、プログラミングをするエンジニアであっても普段あまり意識する必要はありません。
|