教えてください。
文字コードについて調べています。アルファベットはASCIIコードで統一されているために、特に問題がなく、日本語にも JISコードという標準化されているコードがあります。
なので、基本的にはこれをみんなが使えば、文字化けなどという問題には悩まされなくてすむはず。
なのに、なぜ Windows では Shift-JISなどという独特な文字コードを使い、UNIX系では EUCコードを使っているのでしょう。いったい、どの文字コードが一番初めにできて、なぜそれで標準化を図ることができなかったのかなど、日本語文字コードに関する歴史について、ご存知の方、ぜひ教えていただければ幸いです。
No.1
- 回答日時:
OSも今のようにオープンではなく、独自路線で
進んできたことも要因でしょう。
近年になりオープンシステム化が進み、かつ、インターネットの普及とともに、文字コードの相違が目立つようになりました。
そこで(ということでもないですが)でてきたのがUnicode。
すべての文字を16ビット(2バイト)で表現し、1つの文字コード体系で多国語処理を可能にしようとするもの。世界の主要な言語のほとんどの文字を収録している。
これまで、これほど多くの文字コードが存在してしまったのは、コンピュータの能力や独自路線を進むOS郡のたまものでしょうか。
No.2ベストアンサー
- 回答日時:
最初に制定されたのは『JIS』です。
『JIS』では、半角(1バイト)文字と全角(2バイト)文字が混在した文字列中で、それぞれを区別するために、エスケープシーケンスと呼ばれるコードを挿入します。
特定のエスケープシーケンスの後に続くコードをASCII文字コードや漢字コードと解釈するというものです。
ISO-2022-JPで制定されているエスケープシーケンスは、
[ESC] ( B :0x1B 0x28 0x42:以降ASCII文字
[ESC] ( J :0x1B 0x28 0x4A:以降半角カナ
[ESC] $ @ :0x1B 0x24 0x40:以降JIS-1978漢字
[ESC] $ B :0x1B 0x24 0x42:以降JIS-1983漢字
しかし、このエスケープシーケンスで文字コードを指定する方式では、半角と全角が混在している文字列では、文字数とバイト数が混在の仕方で大きく変わってきます。
例えば、今日の日付(5月18日:5と18を半角表記)を『JIS』で表記すると、"5"と"月"の間に3バイト、"月"と"1"の間に3バイト、"8"と"日"の間に3バイト、それぞれエスケープシーケンスコードが入り(5の前のエスケープシーケンスはデフォルトの指定がASCII文字という決まりなので、省略が可能)、単純に考えれば7バイトで足りる所が16バイトも必要になります。(ISO-2022-JP-3では、漢字コードのエスケープシーケンスが4バイトになっているので、18バイトも必要)
そこで、もう20年ほども前のことですが、『Microsoft社』が『MS-DOS』を日本製のパソコンに移植するに際し、『JIS』の「無駄にバイト数を必要とする」という欠点を解消するべく、日本の『ASCII社』(月刊ASCIIとかを出版しているPC雑誌の老舗)と共同開発したのが『Shift-JIS』です。
『Shift-JIS』では、漢字コードの1バイト目を、ASCII文字やJIS半角カナ文字のコードと重ならない0x81~0x9F、0xE0~0xEFにシフトすることで、1バイト目がこの範囲のコードだったら、2バイト目とあわせて2バイトの漢字コードと判断するという仕組みです。
『EUC』は同様の目的で、『AT&T社』によって制定され、UNIX環境での事実上の標準日本語コードとなっていますが、『EUC』自体は、日本語だけでなく複数の文字セットを同じテキスト内で処理することが可能になっています。
ASCII :0x21~0x7E
半角カタカナ :0x8E(1バイト目)+0xA0~0xFF(2バイト目)
漢字 :0xA0~0xFF(1バイト目)+0xA0~0xFF(2バイト目)
補助漢字 :0x8F(1バイト目)+0xA0~0xFF(2バイト目)+0xA0~0xFF(3バイト目)
『Microsoft社』(と『ASCII社』)が『Shift-JIS』を開発し、自社製の『MS-DOS』や、その後継OSである『Windows』に採用したために文字コードの規格としては圧倒的なシェア(シェアというのかどうか???ですが)を誇り、『ISO-2022』にも『JIS規格』にも定められていないにもかかわらず、相変わらず使われているわけです。
こんな所でよろしいでしょうか?
No.3
- 回答日時:
各文字コードには長所、短所があるため、それぞれの理由で使われてます。
JISが正規な物で、通信に使うべきものです。
ただ、コンピュータ内部では別な文字コードを使ってもかまいません。
実際、JISはコンピュータで処理が面倒ですし、MS-DOS当時のマシンでは実用的には使えなかったので、
扱いやすい文字コードとして決められた物がShift JISです。
ただし、速度優先のためいろいろと問題があります。
現在も使われているのは、互換性のためでしょう。
EUCもおそらく内部の処理が複雑になるのを避けるために文字コードを決めたと思いますが、
Shift JISのコードが持つ問題が、既存のUNIX用のソフトに与える悪影響が多すぎるため、
問題の無いコードとしてEUCを決めたと思われます。
ただ、Shift JISを使った物もありましたが。
でも、結局コンピュータ内部で何を使っていても、外部とは全てJISで通信するということを守っていれば問題無いのですが、
内部のコードであるShift JISやEUCをそのまま外部にだしてところが多いのが現状です。
そういえば、UNICODEもありますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# S-JIS → JIS コード変換するには 3 2023/02/09 23:55
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
- その他(メールソフト・メールサービス) 【GAS】GMail自動送信 2 2022/09/04 06:19
- ノートパソコン なかなかに酷い状況です。ノートパソコンのPINを忘れてしまいました。「PINを忘れた」を押してアカウ 2 2023/02/18 15:32
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- Excel(エクセル) Excelの操作方法を教えてください!頭文字2~8文字で特定の値に返す方法 8 2022/07/14 11:26
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化けはなぜ日本語が入って...
-
KとKB
-
文字の容量(サイズ)についての...
-
KBとMB
-
ネット用語で「k」とは?
-
工学 容量の計算?
-
なんで転送速度を「B/s」で表さ...
-
転送スピード
-
数学とPCと単位と
-
5000KBytes/sをbitに変換するには
-
外付けHDD 1TGの使用可能サイ...
-
40ピクセル×30ピクセルの写真を...
-
(*^_^*) キロバイトと字数の...
-
9時45分から12時までバイトに行...
-
容量の大きさについて
-
何Mバイトになりますか?
-
1KBは、2の8乗X1000ではない...
-
ほぼ等しい記号(≒)の1バイト...
-
CPUの動作について
-
GB と Gbの違いの意味
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
携帯電話の略語であるMBって英...
-
文字の容量(サイズ)についての...
-
EXCELでの16進数取り出し、上...
-
KBのMB違いって
-
KBとMB
-
1Mバイトって何バイト?
-
実行計画の「COST」と「BYTE」...
-
K KB MB について詳し...
-
文字数(バイト数)の数え方が...
-
CSV データのバイト数を調べる...
-
Oracle AL32UTF8でのバイトサイ...
-
32bit = 4GB(バイト)?
-
文字化けはなぜ日本語が入って...
-
カナカナの(半)濁点がついた文...
-
GB と Gbの違いの意味
-
DVD-R 4.7GBって、何byte でし...
-
2バイト文字を一括削除するマクロ
-
文字列をバイト数分表示するには?
-
マトリックスサイズが512×512で...
-
アルファベット30文字は何バイ...
おすすめ情報