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

回答編集履歴

1

文字コードと文字コード体系を分けるよう修正

2018/04/25 07:40

投稿

miyabi-sun
miyabi-sun

スコア21553

answer CHANGED
@@ -1,56 +1,49 @@
1
1
  > ユニコードと文字コードの違いがわからなくて困っています。
2
2
 
3
+ 「文字コード」か「文字コード体系」かで変わりますが、
3
- 同じものですよ。
4
+ 文字コード体系との比較なら同じものですよ。
4
- 「文字コード」という規格が沢山あって、その文字コードの1つの規格がユニコードなのです。
5
5
 
6
- > ユニコードは16進数と聞いたのです
6
+ もっと正確に言えば[文字コード体系](https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89)の規格は沢山あり、ユニコードは文字コード実装の一つです
7
7
 
8
- ユニコード以前に全ての文字コードが16進数なのです。
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
- 0か1か2値を1bitとして考え、それを8文字繋げ1byteとしました
10
+ [ユニコード(Unicode)](https://ja.wikipedia.org/wiki/Unicode)は全世界で一つ文字コード体系」で全の文字を書き表すいうプロジェクトを指しま
13
- 計算2進数で行います。1byteは00000000(0) - 11111111(255)を表塊です
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
- こで2byteを1まする事を考え付きます。
15
+ のchar型に代入した12345いう数値は、内部的2進数に変換されます。
23
- 256通り表現が出来る2byteくっつけること、256*256=65536字を表現ることが出来る様になりました
16
+ ですで結局は`System.out.println('\u3042');`と同じこと2行に分ていだけです。
24
- (実際には65536字では足りなかったので、今日ではユニコードは多少下火になっていますが、全世界の殆どの文字列を叩き込めたのでなかなかいい感じです)
25
17
 
18
+ ユニコード以前に全ての文字コードは16進数が基準です。
26
- > 16進数てもうちょっと深掘
19
+ 元々コンピュータの世界は0か1かかあません。
20
+ なのでこの0か1かを大量に使う事で、様々なものを表現するという事を行いました。
27
21
 
28
- 数学で習ったかもしれませんが、2進数は8進数や16進数と非常に相性が良いのです。
29
- 2進数で1111(15)16進数F(15)と同じものです
22
+ 詳しく下記サイトを見て下さい
30
23
 
31
- 1010101010…の羅列はプログラマにとっては読づらくて敵わない
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
- パソコンアプリ間、ネットワーク間の通信では0か1かのビットをまとめたビット列を送信あって通信を行います
26
+ 詳細割愛しますが、
36
- 0か1かのビッ列なんて判別付くのかよ…という訳、様々な規格があり、規格沿った通信行う必要あります。
27
+ 1バイトで表現出来る数値の番地(表)1つずつ文字当てはめて出来たもの文字コード体系です。
37
28
 
38
- 文字コードとはビット列を人間が読む文字に変換したいという試みや、
39
- ルール決めを指すものですので、文字コードだから16進数というわけじゃないんです。
40
-
41
29
  > 文字コードとは日本特有のコードと考えればいいのでしょうか。
42
30
 
43
31
  いいえ違います。
44
- パソ通信で送信合うは0101010のビット列すので、そのまでは誰も読めません
32
+ 質問文のードには出てきていません、何か文字モード体系行きしょうという取り決がなされてい
33
+ [Javaが取り扱う文字コード体系](http://d.hatena.ne.jp/cero-t/20110621/1308667569)はUTF-16のようですね。
45
34
 
46
- 圏で生またASCII文字をはじめとして、世界中に文字コードが存在します。
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
- 基本的にパソコンを扱う一般ユーザーや、プログラミングをするエンジニアであっても普段あまり意識する必要はありません。