プロが教えるわが家の防犯対策術!

sjisとかutf-8とかeuc-jpとかisoなんちゃらとかutf-16とかもういっぱいありすぎて誰得なんですかこれ
それぞれ利点と、なんでこんなにいっぱいあるのか教えてください
hatenaなんかはeucからutfに変えたみたいですが・・

もう全部統一したらいいのに・・(´Д`)
回答宜しくお願いします。

A 回答 (2件)

現在文字コードが分化しているのは、歴史的事情です。



後方(過去への)互換性を重要視するわけでもなければ
今後は、Unicodeを使用していけばいいと思います。


以下はあまりにもな回答があったので。

まず、EBCDICやACIIなどの英数記号文字のコードがありました。
日本語としては、始めに1バイトのいわゆる半角カナの文字コード
JIS C 2660 現在では、JIS X 0201と言われるコードが、
次に2バイトで漢字やその他の記号も含められるようにコードが定められました。

JISコードの表現は、7bitのコードだけで表現できますが、英数字
からのコードを切り替えるために、SHIFT-IN/SHIFT-OUTという
当時のコンピュータにしてはかなり荷が重い処理体系でした。

当時80年代の一般的なパソコン、8bit CPUのころから日本語を
処理するためにまず、8bitのコードで JIS X 0201に相当する
半角カナを処理するようにしました。

さらに、そのような8bitのいわゆる半角カナのコードを活かしつつ
SHIFT-IN/OUTの処理をせずに2バイトの漢字コードも扱える
コード体系が考えられ、Shift JISと呼ばれるようになりました。

一方で、いわゆるUNIX系の処理装置で漢字が扱えるくらいCPU
パワーが上がっていました。UNIXは英数文字に対して強力な処理を
行うプログラムが数多くありましたが、それらをなるべく簡単に
日本語処理に適用させるために考えだされたのが、EUCです。

EUCは、JISコードの2バイト文字(いわゆる全角文字)の1バイト目
・2バイト目の両方共、7bit目を1にする(0x80~0xFF)コード
です。
ShiftJISに比較して、当時のASCIIだけに対応していたプログラムを
容易に日本語に対応できました。
しかし、8bitパソコンで広く使われていたいわゆる半角カナには
単純には対応できません。

この当時、80~90年代、パソコンはShiftJISコード、UNIX系はEUC
コードでした。

さらに、インターネット(日本ではその前身である JUNET)が
普及を始め、メールの日本語をどうするか議論がありました。
当時のメールを転送するプログラムは7bitの文字コードしか転送が
保証されていませんでした。

したがって、日本国内のローカルルールとして、電子メールは
JISコードで本文を書くと決められ、JISコードの処理系が実際に
広く運用されるようになりました。80~90年代初頭。
さらに国際化の対応として、JISのコードをISO表記にした
ISO-2022-JPと呼ばれるコード体系としました。

ここまでが日本国内の事情。
80年代の頃から、ASCII文字コードにない文字も使用している、西欧
(東欧)のコンピュータはASCIIコードの一部記号を独自の文字に
変更したり、日本のいわゆる半角カナのような拡張をしていました。
これらを統一し、更には世界中のコードを統一して運用できないか
というのが Unicodeの流れです。

Unicodeは紆余曲折があり、コンピュータで処理をするにも結構
大変な処理でした。しかし、コンピュータの処理能力向上や
文字コードを扱う部分を OSやライブラリで隠蔽化や簡略化を
行わせることが増え、Unicodeでも現在では、プログラムサイドからも
ユーザサイドからも問題なく処理しているコンピュータが多くなりました。
(少なくとも、Windows XP以上やLinux等が動くPC以上のコンピュータ)

以上が歴史的事情。

まとめると以下のようになります。
Shift JIS
8bitの頃から利用されていたいわゆる半角カナを活かすコード体系。
80~90年代のパソコンで利用。
ただし、プログラム的にはテクニックを要します。
WindowsもXPのころから内部は全てUnicodeになっているので、
いずれ盲腸のような扱いになると思われます。
EUC (EUC-jp)
UNIX系を中心として様々な処理系を日本語(JISコード)に使用された
コード。外国産のUnicode非対応のプログラムを簡単に日本穂対応
させる時に使用されています。これも盲腸的な扱いになるでしょう。
JIS (ISO-2022-JP)
インターネットメールを使用するために普及したコード体系。
初期の国際化を考慮したインターネットのプログラムはこの
コードを使用していました。
Unicode
コンピュータの歴史的には後発で紆余曲折を経たコードですが、
国際化の対応や、外国で実装されているプログラムの国際化対応
としては、このコードが現在はほとんど利用されている(はず)です。

この先は、Unicodeを使用するのが標準になると思われます。


ちなみに、60年代のコンピュータは大型かミニコンと言われ、互換性は
ないか、せいぜい IBMへの互換性だけです。
Webは確かにSGML等をベースにしたHTMLを定めましたが、文字コードや
エンコードにはメール等の国際化で使用したMIMEを使用していたので、
文字コードに関しては直接的には無関係です。
米国内の国防省や各省庁間のコード体系で非互換性は無かったわけでは
無いですが、現在のコード体系の分化の原因になっているわけではない
です。

今後、ましてや100年先なんぞは本格的にコンピュータの文字処理が始まって
せいぜい50年程度しか経っていないので、偉そうに予測なぞできません。が、
しかし、Unicodeには拡張の余地が大きく有り、新たに別の異なる文字体系を
作って別れるよりも、Unicodeの拡張に新たな文字体系を入れ込んで行くだけ
かと思いますよ。

先の回答は、質問への回答としても歴史的な説明としても、支離滅裂と思われる
部分が多々あったので、補足しています。
    • good
    • 1
この回答へのお礼

ありがとうございました

お礼日時:2012/02/08 17:52

たぶんこのカテゴリーに回答される方は、みなさん、今更何をいっているんだ。



なんて感想をもたれているのでは?


その昔、昔、ある所に、おじいいさんと、おばあんさんが住んでいました。と言うコンピューターの世界では、そのレベルの話です。

なにせWebが開発されるきっかけがそこだからだよ~~~~

1960年代だっけ、コンピューターが軍事的にも重要視され、いろんなメーカーが開発したが、ほとんどのメーカーに互換性が無く、こっちで作ったファイルはあっちのコンピューターでは読めない、使えない。なんてことが起きていたんですよ。

軍事は最高国家機密なので、互換性を重視されることはなく、無視されていたが、それでもやはりアメリカの省庁間でのやりとりで、同じ軍なのに違うコンピューターを使うと、全くファイルが読めなくなる。そこでSGMLなんて物が考案された。今のXMLの元祖ですね。HTMLの元祖でもある。

そのよさは、プレーンテキスト(バイナリーとか特殊な物でない)ファイルに決まりごとを標準化して、タグつきで意味の在るメタデーター(ちょっと違うが)にすれば、スタイルとかフォーマットができて、文字コードが違っても読めるようになる。

なんて事を考えた。

なので、SGMLには文字コードなど、基本的な事を定義したファイルと、DTDやスキーマとか呼ばれる、書式などを定義したファイル、そしてインスタンスファイル(ソースファイル)で構成されています。

それらのファイルに従い、読み込んでフォーマットしてくれるフォーマッター又はビューワーを作れば、どんなコンピューターでつくっても、読み取れ、使う事ができる。

その流れを、XML、HTMLをくんで、今のブラウザアプリができている。

しかし、プログラム言語やOSなど、文字コードを統一しようという動きがあり、マイクロソフトもUTFにデフォルトを変更してきた。

その歴史は、

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF …

などみればわかるはず。

http://dic.yahoo.co.jp/dsearch?enc=UTF-8&dname=0 …

http://ja.wikipedia.org/wiki/Unicode

ただ、発祥が今のような世界情勢になっていない時に、発案されてしまったため、第3国、つまり韓国など今世界をリードしている国の事がまったくむしされていて、欧米の横柄な態度の学者先生たちによってつくられてしまった。

それが、かならずしも統一されていない要因ともなっている。

まあ、世界の歴史から言えば、100年くらいはかからのでしょう。

今から100年前の事考えてみてください。確かに、国際協力なんてあったが、ヨーロッパはアジアを完全に見下していましたからね。植民地としか考えていませんでしたからね。

そのうちにアフリカの国の、どこかの部族の文字も、考えないといけない時代がくるのでしょう。それだと今の形式でまにあうのでしょうか?

そう、時代と共に発展してゆくので、文字コードは、どんな時でも増えてゆきますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!