(ちょっとメモ)文字コード、文字集合、エンコードについて(2)
最終更新日:2017年12月08日 (初回投稿日:2012年09月11日)
続きです。
前回の(ちょっとメモ)文字コード、文字集合、エンコードについて(1)では、
1978年の「ISO-2022-JP(いわゆる JIS、 JISコード)」誕生まででした。
日本語用パソコンのために「Shift_JIS」が生まれた
1980年代、日本では、16ビットCPU搭載のパソコンが続々発売されたんだそうです。
(16ビット= 2バイトなので、日本語が表示できるパソコンってことでしょうね。日本語は「2バイト言語」って言われてます。詳しくは前回を参照に。)
1982年、「三菱Multi16」というパソコンに日本語対応OSを搭載するために、Microsoft社、アスキー社、三菱電機らが共同開発した文字コードが「Shift_JIS」。
「S_JIS(エスジス)」などとも呼ばれます。
半角英数字(1バイト)と漢字などの全角(2バイト)の文字を、エスケープシーケンスなしで混在できるように(容量や処理時間の短縮のため)工夫されたコードです。
( ISO-2022-JP(いわゆる JIS)は、エスケープシーケンスを使ってた。(前回参照) )
いわゆるJIS を元に、漢字の符号位置を移動(シフト=Shift)させて、符号空間の隙間に押し込むという方法なので「Shift _ JIS」と呼ばれたんだって。
「Shift_JIS」は、MS-DOS 、Windows 、Mac OS などに採用され、1980年代〜90年代の日本語OSの標準になったのだそうです。
で、日本でパソコン売ってる各社は、
自分トコのパソコンだけで使える文字コード=「Shift JISの亜種」と言えるモノを作りました。(これ、メーカーの性よね…他社製品との差別化とか言ってユーザー不在)
これが 機種依存文字。NEC機種依存文字、IBM拡張文字、Apple拡張文字などがあり、OS間での互換は当然ありません(文字化けの原因)。
「EUC-JP」というのもありました
「EUC-JP」は「日本語EUC」とも呼ばれ、「EUC」は Extended UNIX Code の頭文字。UNIX 上で日本語を使うために作られた文字コードで、1985年生まれです。
これも、いわゆるJIS を元に ASCII(1バイト)と日本語(2バイト)を共存させるために「AT & T 社」が独自改良したものだそうです。
日本語の UNIX系 OS の標準で広く利用されていましたが、UNIXも「UTF-8」にシフトしました。EUC-KR(韓国語)、EUC-CN(簡体中国語)などもあるそうです。
世界中の文字が扱える「 Unicode 」登場
そして「Unicode(ユニコード)」が登場します。
「Unicode」は文字コードと言うより「符号化文字集合」と言っちゃったほうが良いのかもしれません。
これのエンコーディング(文字符号化方式 character encoding scheme, CES)として、「UTF-8」「UTF-16」「UTF-32」などがあります。
「Unicode」が生まれた理由は、
各国語のOSができ、文字コードもバンバン増えて行って、国どうしの情報交換の際に、トラブルや、コスト面のデメリットが発生してきたから。
これを解消するために、世界中の文字を1セットに収録しようと、1980年代から作られたそうです。立ち上がったのは「ISO(国際標準化機構)」と「ゼロックス&民間企業たち」
その流れは、
★1984年から、ISO(国際標準化機構)が「世界中の文字を1つの字集合として扱える文字コード規格を作る」と決め、「ISO 10646」として、ドラフトを作りはじめました。
★これとは別に、ゼロックス社が1987年頃から同じ主旨で文字コードの開発を開始します。この名称が「Unicode」=「ユニバーサル(universal)な文字コード(code)」ってことでしょうね。
★1991年初期、こっちの(ゼロックスの)方式に賛同する民間企業(ゼロックス、マイクロソフト、アップル、IBM、サン・マイクロシステムズ、ヒューレット・パッカード、ジャストシステムなど)によって「ユニコード・コンソーシアム」が設立されます。
★で、「そんなら ISO 10646 と Unicodeを1本化しよう」というコトになり、1991年10月に、Unicode 1.0ができたそうです。
この「みんなで作る」っていうのがイイね!
その後どんどんバージョンアップしてるそうです。
Unicode 2.0 以降では、21ビットの文字集合になったそうです。
(1バイト=7ビットとして3バイト。容量デカイな)
2 の 21乗ですから、2,097,152種類もあるんです! まあ、そのくらいじゃないと多国語の収容はムリだよね。
収録されている文字は、各国から持ち寄られた、それぞれの言語の文字集合を、ユニコード・コンソーシアムが取捨選択しているんだって。
日本語は、JIS X 0201、JIS X 0208、JIS X 0212、JIS X 0213の内容を収録。
で、「漢字」なんですが。
中国語・日本語・朝鮮語での、同じ意味や起源の漢字は「統合」されたんだって。
これが、微妙にカタチ(点や画の向きとか長さとか)が自国で使ってるのと違ってて、各国とも不満が出とるそうです。そりゃ出るわ。(よ〜く見ると違う漢字に見えるのって、イヤですよね)
まあしかし、ネット上だけのことだし、文字化けしないで使えるほうがプライオリティ高いかなw。
そのうち、各国にマッチしたものに変更されて行くかも。(また容量が増えますね)
インターネットでもっとも一般的なのが「UTF-8」
「Unicode」のエンコーディングのうち「UTF-8」がネット上の標準になっています。
Linuxなど OSの標準文字エンコードとしても使われているそうです。
このエンコード方式は、ケン・トンプソン氏が考案したそうです。(UNIX OSを作った人だって)
1995年ごろ誕生。(…ケンさんじゃなくて、よ)
「UTF-8」は、ASCIIと同じ部分は1バイト、その他の部分を2〜6バイトでエンコードするのだそうです。(6バイトって…こりゃまた容量デカイですね)
で、漢字や仮名などには 3バイト使うんだって。
これまで 2バイトでいけてたのにデータ量が 1.5倍に増えちゃいますね。
で、「UTF-8」で扱える文字の種類が下の表です。めっちゃたくさんの国の文字が表示できますね。
(この↓表は、ウィキペディアから引っ張ってきました。ちょっとタイトルの文言を編集してるけど)
Unicode | 文字種 | 日本語の文字集合(その内容がUnicodeのどこに当てはめられているか) |
|||
JIS X 0201 | JIS X 0208 | JIS X 0212 | JIS X 0213 | ||
U+0000 - U+007F | ASCII | Roman(円記号・オーバーライン以外) | - | - | - |
U+0080 - U+07FF | ラテン、ダイアクリティカル、ギリシャ、 キリール、アルメニア、ヘブライ、アラビア、 シリア、ターナ | 円記号 | 非漢字の一部 | 非漢字の一部 | 非漢字の一部 |
U+0800 - U+7FFF | インド系諸文字、 句読点、学術記号、絵文字、東アジアの諸文字、全角半角形 |
オーバーライン、Kana | 残りの全て | 残りの全て | 大半 |
U+10000 - U+1FFFFF | 上に含まれない漢字、古代文字 | - | - | - | 第3・第4水準漢字の一部 |
この表でグリーンの太字にしたのが、日本語表現で主に使う文字種。
これを見ると、漢字は「東アジアの諸文字」のカテゴリーに入っている事がわかります。
私はMac使いなんですが、OS X にしたとき、システムフォントに中国漢字やハングルや、アラビア文字などが入ってて「何だコレ?」と思いました。
でも、YouTube や Facebook などで、英語以外の言語のコメントを表示している(読めないけどw)のを見て、ある意味感動したんです。
私が日本語でコメントしたのは、今までなら外国語圏の人にとっては「化けて」いたのが、ちゃんと日本語として表示できてるのね。読める人には呼んでもらえる。こりゃスゴいなと思いました。
余談:byteの次は…メートル法だけどやっぱ2進法
1バイトまでは2進数だけどその先はなぜか10進数(メートル法)に準じて行く不思議について、
「[14-3] コンピュータ上の単位について(ビット、バイト、メガ、ギガ)」に移動+まとめました。
そちらをご覧ください。 ブックマークしてたらごめん。
今回参考にさせていただいたサイト
- まず、ウィキペディアの各ページ(これは各用語にリンクを貼りました)
そのほか、 - ミケネコの 文字コードの部屋
- 文字コードの話
- 文字コードとエンコーディング (1)
- 睡人亭 文字コード入門
- 文字コード表(JIS X 0208 の JIS、Shift_JIS、EUC-JP での文字コード表)
- Shift-JIS 文字コード表 などを参考にさせていただきました。
-
それから、文字コードとは関係ないけど、累乗計算を簡単にできるサイトを発見。
- CASIO の "高精度計算サイト" 内の、「累乗」(作者:Enpitsu さん)
次回予告
「文字コード」関連を、2回にわけてメモりましたが、んーまだ未消化。
ただ、文字をコンピュータで表示するために、先人がこんだけ知恵を絞ってくれたんだと、わかった事が大収穫でした。
次回は<meta>要素に戻って「name属性」を使います。
これはサイトの説明文を書いたり、著者名を書いたり、サイトに関する情報を書いておく属性です。
- 関連記事
-
- [49-1] input要素の属性一覧・ type属性の値一覧
- [48] フォーム部品のグループ化のための fieldset要素と legend要素
- [47] form要素で「送信先」と「送信方法」を指定しよう
- [46] template要素でテンプレートを作ろう
- [45-5] meta要素で OGPを設定しよう
- [45-4] meta要素の http-equiv属性で動作を指示しよう
- [45-3] meta要素の name属性でサイトの情報を指定しよう
- (ちょっとメモ)文字コード、文字集合、エンコードについて(2)
- (ちょっとメモ)文字コード、文字集合、エンコードについて(1)
- [45-2] meta要素の charset属性で文字コードを指定しよう
- [45-1] meta要素で基本情報(メタデータ)を指定しよう
- [44] script要素で HTMLにスクリプトを読み込む or 直接書く
- [43] style要素で CSS を HTML文書内に書こう
- [42-4] link要素で ショートカットアイコン(favicon)を表示させよう
- [42-3] link要素の「rel属性」の値(リンクタイプ)
初心者にも使いやすい(と思う)レンタルサーバー
「初心者ですがレンタルサーバーはどこがいい?」というご質問をよくいただきます。
自由にファイルをアップロードできる自分のサーバがあると便利ですよね。ローカル環境じゃなくサーバ上で試してみたい時がありますからね。
私が使っているのは、
スターサーバーや ロリポップ!
です。どちらも管理画面がわかりやすく、マニュアルも充実していて、料金も安い。どちらもライトプラン以上で WordPress が使えます。
初心者が始めやすいサーバだと思います。
ちょっと料金は高いけど、さくらのレンタルサーバや、エックスサーバー
は、やはり老舗なのでおすすめです。
両方とも高スペックでコスパが良く、老舗でユーザーが多いので、質問する場がたくさんあります。初心者だけど仕事でサーバが欲しい場合は、安心なのではないかと思います。
スポンサーリンク