資料シート●各科目

符号系

http://www.infonet.co.jp/apt/March/syllabus/bookshelf/CCS.html




 を記録/通信するために文章を記録したり通信したりするためには、文章の中に現れるかもしれない文字(正確にはキャラクタ)に対して、それが区別できるような符号を対応させておく必要がある。どの符号がどのキャラクタを表わすかを決めた規則を(キャラクタ)符号系(coding system)という。

・使っていいキャラクタの範囲
キャラクタとほかのキャラクタとの区別
キャラクタ符号との対応
符号系によって定められているもの

キャラクタを文字として表示/印刷する場合の文字の形
符号系によって定められていないもの

 必要になるたびに勝手に符号系を決めるのは不便なので、みんなが使える共通の符号系が国際的に(または各国で)決められている。
 現在では、ビット列(bit sequence。資料[ビット])を符号として使う多くの符号系が公けのものとして決められている。
 文字のための符号系にはいろんな種類が連立していて、現在はそれらが混乱を起こしながらなんとか使い分けられている(資料[キャラクタ])。日本で特に広く使われているものだけでも、ラテン文字(つまりABC)のためのものが2種類、日本字のためのものが4種類以上ある。
これらは、テキストに使われている言語や使っているシステムの性能に応じて使い分けられている。
 キャラクタに関しては以下のような符号系が定められている。

名称
ABC、数字
かな
漢字
</TD>
版図
ISO

×
×
国際規格
ASCII

×
×
合衆国
EBCDIC

×
×
IBM
JIS
(1単位系)

○(*)
×
日本
JIS
(2単位系)



日本
シフトJIS



Microsoft
(のち日本)
日本字EUC



unixユーザ
ユニコード



国際規格

ビット列によるキャラクタ符号系
(*) かたかなだけ

 厳密には、文章はふつうの文字だけで構成されているわけではない。EOL(end of line、文末)やEOF(end of file、文章末)などの特別な記号(列)も含まれている。


初期の文字符号系


 文字を表現するための符号系としては、Morse符号系(モールス-。▽図、資料[Morse符号系])が古くから使われてきた。



Morse符号系
国際式(左) 日本式

 Morse符号系はよく工夫されていたが、正確な表現のためには十分とはいえなかった。


ラテン文字の場合


 最近では、代わりにビット列による符号系が使われている。
 ABC...Zや012...9のような、世界で共通に使われているキャラクタ(ラテン文字という)に対する符号の対応については、国際的にはISO符号系が、日本ではそれを修正したJIS(1単位)符号系が定められている。
 国際的な用途では、ラテン文字、数字、基本的な記号が扱えるISO符号系(資料[ISO符号系])が最もよく使われている。ISO符号系(国際標準化機構-)は、合衆国のASCII符号系をもとにして、国際的に共通に使えるように定められた符号系だ(資料[ISO符号系])。各国のそれぞれの言語に対応した符号系はこれをもとにして作られている。
 ISO符号系は、世界で共通に使われているラテン文字、数字、それらと合わせて使う記号などをカバーしている。これのらキャラクタには8桁のビット列が割り当てられている。ただし、キャラクタを区別するために使われているのは、8桁のうちの右の7桁だけで、左端の1桁は、記録や通信の誤りを防ぐ目的などに使われている。
 日本ではJIS1単位系(資料[JIS1単位系])が決められている。JIS1単位符号系は、ISOを日本の事情に合わせて直した符号系だ(資料[JIS(1単位系)])。8桁のビット列を使い、その前半でISO符号を吸収し、後半でかたかなをカバーする。ひらがなや漢字が扱えない割りに、ISO符号系や各国の符号系と混乱するので、できれば使わない方がいいと考えられている。たとえば、インタネットの電子メールでは、JIS1単位符号系に特有な文字は使ってはいけないことになっている。
 合衆国ではASCII(実質的にはこっちが先。資料[ASCII])が作られていて、それぞれの国内では広く使われている。

 ISO符号(国際標準化機構-)は、8桁のビット列の符号系だ。ただし、キャラクタを区別するために使われているのは、8桁のうちの右の7桁だけで、左端の1桁は、記録や通信の誤りを防ぐ目的などに使われている。ラテン文字、数字、それらと合わせて使う記号をカバーする。各国の独自の符号系の基準としても使われている。合衆国のASCII符号系をもとにして作られた。

 JIS1単位符号は、ISOを日本の事情に合わせて直した符号系だ。8桁のビット列を使い、その前半でISO符号系を吸収し、後半でかたかなをカバーする。ひらがなや漢字が扱えない割りに、ISO符号系や各国の符号系と混乱するので、できれば使わない方がいいと考えられている。たとえば、インタネットの電子メールでは、JIS1単位符号は使ってはいけないことになっている。


ビット列によるキャラクタ符号系
日本字の場合


 JIS2単位符号系(またはただJIS符号系)は、16桁のビット列を使う符号系だ(資料[JIS(2単位系)])。ひらがなや漢字もカバーできる。しかし、JIS1単位符号と混ぜて使うと区別がつかなくなるので、混ぜて使うのなら切り替えを表す記号が必要になる。
 JIS1単位系では漢字には符号を対応づけていない。これは、漢字は何千(または万とも)種類もあるので、ISOとの互換性を保ちながらでは、それらを取り込むことができないからだ。そこで、ほかにJIS2単位系(資料[JIS2単位系])を定めて漢字を扱えるようにしている。また、JIS2単位系の短所を改良したシフトJIS(資料[シフトJIS])や(日本語)EUC(資料[EUC])もコンピュータの関係では広く使われている。
 日本だけで使われている文字(日本字)は、漢字が含まれるから、8桁のビット列では種類が少なすぎて区別しきれない。そこで、特別に16(またはそれ以上)桁のビット列を使っている。

 日本字を表現するための符号系にはいろんなものがある。最初はJIS(2単位系)が決められたが、そのあとで、ほかにシフトJIS(または Microsoft JIS)、日本用EUCユニコードなどが現われた。これらは、それぞれ長所/短所があるので、統一することが難しい。そのため、現状では、用途とかコンピュータやソフトウェアの機種によって別々の方式が使われている。

 JIS2単位符号系(またはただJIS符号系)は、16桁のビット列を使う符号系だ。ひらがなや漢字もカバーできる。しかし、JIS1単位符号と混ぜて使うと区別がつかなくなるので、混ぜて使うのなら切り替えを表す記号が必要になる。

 シフトJIS符号系(またはMicrosoft JIS符号系)はJIS2単位符号系と同等の符号系だ。1単位符号と混ぜて使っても区別しやすくするために、1単位符号と間違えそうなビット列は使わないように、JIS2単位符号系の表の左右を少しずつずらしたような符号系になっている。ウィン機はもちろんマック機でも、標準の符号系として使われてきた。
 パーソナルコンピュータでは、これまではシフトJIS方式が最もよく使われてきた。シフトJISは、たいていの漢字、かな、ラテン文字、句読点に16桁の符号を割り振っている。たとえば"あ"のシフトJIS符号は82A0(=はっせん-にひゃく-えーじゅう-れい)、"い"は82A2(=はっせん-にひゃく-えーじゅう-に)だ。
 シフトJISはISOと混ぜて使っても字の切れ目が分からなくなったりしないようにうまく工夫されている。

 EUC符号系(正確にはEUC日本符号系。資料[EUC])も、これまでの二つと同じように16桁のビット列を使う符号系で、漢字を含む日本字をカバーする。unixで標準の符号系として使われている。各国ごとに、その国に特有な文字をカバーするEUCが決められている。

 ユニコード(Unicode)は、8桁や16桁などいろんな長さのビット列を混ぜて使う符号系で、世界のすべての字をカバーする(資料[ユニコード])。ユニコードでは、書き方が違うだけの漢字や、各国の同等の漢字に対して共通の符号を割り当てるので、各国語が混ざった文章やデータベースに使うと大きな効果が得られることが期待されている。MacOSでもWindowsでも、これからは標準の符号系をユニコードに切り替えていくことになっている。
 ユニコード(Unicode)は、世界のすべての文字に対してたった一つの共通の符号体系で符号を対応させられるようにしたいという気運の盛り上がりの中で生まれた新しい符号系だ。8桁や16桁などいろんな長さのビット列を混ぜて使う符号系で、世界のすべての字をカバーする。(資料[ユニコード])
 最近になって、世界のどんな言語(を混ぜてもいい)で書かれたテキストに対しても使える符号系としてユニコード(資料[ユニコード])が作られた。
 ユニコードでは、書き方が違うだけの漢字や、各国の同等の漢字に対して共通の符号を割り当てるので、中国語で書かれていても日本語で書かれていても、(国による書き方の違いはあっても)同じ字の綴りなら同じ符号で書き表わせるようになる。このため、[ユニコード]は、各国語が混ざった文章やデータベースの実現への一歩として期待されている。たとえば、最近になって(マックでもウィンでも)多くのソフトウェアが改良され、ウィンドーの中で作文を編集している間は、ユニコードキャラクタを取り扱うように変わった。この動きはそのほかの用途のコンピュータシステムにも拡がっていくだろうと考えられている。


 符号系の使いやすさは、文字の選び方(それによって使うビット列の長さが決まる)と並べ方によって決まる。また、ほかの符号系と混ぜて使う場合は、切り替え方や区別のしかたも決めておく必要がある。


符号系の対象


 わたしたちが日常的に文字だと思っているものは、実は文字を視覚化したものであって、さまざまな視覚的な要素(▽図)によって文字の内容が飾られている。



大きさ

書体

修飾
太く 斜め

 テキストを記録/通信する場合は、(用途にもよるけれど)こういった視覚化にかかわる情報は排除しておかなくてはいけない。このような情報が(賢明ではない方法で)テキストに含まれていると、たとえば、"赤"を検索しようとしているのに、色が違っているからというだけの理由で""が検索から洩れてしまうという問題が起こるだろう。

 ISOJISは文字を表現するための符号系だと受け止められていることが多いが、それは正確ではない。CCSの符号が対応づけられている対象は、文字ではなく、その文字が表している意味だからだ。視覚的な要素(▽図)が違っているだけなら、それらの文字には、同じ一つの符号が割り当てられている。
 符号が割り振られている(見かけの違いを無視して初めて現れてくる)文字の本質のことをキャラクタ(character)という(JISでは文字概念と呼んでいる)。

 字体も(対立する意見もあるが)文字の本質ではなくて視覚的な要素にすぎない。そのために、JIS2単位系などの多くの符号系は、異体字を区別できるようには符号を割り振っていない。
 最近になって、ユニコードの登場をきっかけにして、異体字(特に自分の氏名に使われている字体)に符号が割り当てられていない(または一般的な符号が割り当てられていない)ことに対する不満が議論を引き起こしている。
 異体字符号が割り当てられていないということ自体は全くの誤解だが、議論を収束させるためには、妥協と理想とが使い分けられている符号系の現状が解決されることが必要なのかもしれない。


日本における符号の二重性


 JISとして決められている符号系に限って見ても(実はほかの符号系でも)、ラテン文字(とかたかな)だけは1単位系の符号と2単位系との2種類のビット列が同時に割り当てられている。これらは、表示させれば同じ文字に見えるけれど、キャラクタとしては全く別のものとして取り扱うことになっている。だから、たとえばウェブをHTMLで書く場合に、タグに16桁で表わされている方のラテン文字を使うとタグとして働かないといった問題が起こる。そもそも、たいがいの国で使われている情報システムは、数千種類ものキャラクタを使い分けなければならなくなるようなことを想定していない。
 ラテン文字はなるべく1単位符号系を、かたかなはなるべく2単位符号系を使って取り扱うようにした方がいいだろう。

 よく、かん違いして、1単位系/2単位系の符号で表現されているラテン文字のことを半角/全角という人がいるけれど、これは厳密には正しい用語法ではない(資料半角/全角)。


文字化け


 符号系が違えば同じ符号でも表している意味が違う。でも、符号を見ただけでは、それがどの符号系で符号化されているか区別することはできない(暗号を解くつもりで作業すれば分かるかもしれないが)。だから、海外のウェブを日本字用の符号系に照らし合わせて読もうとすると、ビュアは間違った字を表示してしまう。これを字化けという。
 符号系が明らかになっていなければ、符号で表現されているキャラクタを見ただけでは、それがどのキャラクタを表しているか分からないという点に注意しよう。また、どの符号系に基づいているか区別することもできない(暗号を解くつもりで作業すれば分かるかもしれないが)。  符号として記録/通信されている文章を復号する場合には、必ず、符号化に使われたのと同じ符号系を使わなければならない。たとえば、日本字の符号をそのほかの外国語の符号系に照らし合わせて読もうとすると、別のおかしな綴りに見えてしまう。このような現象を文字化けという。

 符号系では、個々のキャラクタ符号との対応も大切だが、それよりも、キャラクタの選び方(それによって使うビット列の長さが決まる)と順番の決め方の方が大切だ。また、ほかの符号系と混ぜて使う場合は、切り替え方や区別できるように飛ばして使わないビット列も決めておく必要がある。

 インタネットでは、日本字についてはJIS2単位符号系を使って表現しなければならないことになっている。だから、実は、ほとんどの方式のコンピュータのエディタを使って書いた(つまりシフトJISやEUCで表現されている)ウェブや電子メールは、そのままでは正しく表示することができない(それどころか通信することもできない)。そこで、ExplorerやNetscapeなどのクライアントは、これらの文章がコンピュータを出入りするたびに符号の交換をしてくれている。

 時々は、符号系の判定がうまくできなくて、文章が、間違った符号系で読み書きされてしまうことがある。海外のウェブを日本字用の符号系で読もうとして起こった間違いの実例を見ておきなさい。
 ウェブや電子メールはほかのコンピュータから届くので、自分が作文した文章と違って、どんな符号系が使われているか分からない。これでは、ウェブも電子メールも読むことができない。
 そこで、ウェブや電子メールを受け取って表示するアプリは、本文が符号化された時に使われた符号系をいろんな情報から推定して復号に使う。しかし、情報が少なかったり誤っていたりして、正しい符号系が推定できないことがある。このようなことが起こると、表示されるのは(所々かもしれないが)でたらめな文章になってしまう。特に日本字の文章では、よく似た符号系がいくつもあるために、このような間違いが起こりやすい。
 このような場合に備えて、これらのアプリでは、その本文に合っていると思われる符号系を読み手が強制的に指定できるようになっている(資料[符号系の訂正])。でたらめな文章が表示されてしまって読めない場合でも、この機能を使っていろんな符号系を試させていくことによって、正しい表示に直せる場合が多い。


ビット列を使わないキャラクタ符号系


 これらのほかに、古くから使われている符号系の一つにMorse符号系(モールス-。▽図、資料[Morse符号系])がある。



Morse符号系
国際式(左) 日本式

 Morse符号系には、二つの特徴がある。

・3種類の記号("・"、"−"、およびこれらの区切りに当たる間隔)を要素として組み立てられている
符号によって桁数(符号を組み立てている要素の個数)が違う

 これに対して、現在使われているほとんどの符号系では、符号に使う要素の記号は×/○の2種類で、ビットと呼ばれている。また、それぞれの符号系の中では、原則として符号の桁数は8とか16とか一定に定められている。



コンピュータ


Copyleft(C) 2001-05, by Studio-ID(ISIHARA WATARU). All rights reserved.


最新更新
05-08-08