- FAQ TO USE KOREAN LANGUAGE ON JAPANESE PC -
 
9.文字コード
            より詳しい内容や質問はハングル工房綾瀬店へどうぞ
 
1.コンピュータに「文字」は理解できるか?
 
コンピュータ(もっと正確に言うとCPU)には、「文字」などという高級な
ものは理解できません。解るのは、デジタルの電気信号だけです。
 
じゃ「数」なら解るのか、というと、定義次第ですが、「本当は解ってない」と
いうのが正解です。この、ONかOFFかのデジタル信号、1単位を1bitといいますが、
それを何bitかまとめて、それを教えこまれた手順で、適当に加工する事ならでき
ますが、その結果を人間がみると、「数の計算」をしたように見える、より正確
には、そういう風に見えるように、加工手順を教えこんであるという訳です。
 
こういう訳ですから、「文字」も、何bitかの電気信号と表現しない限り、CPU
には存在すら理解できない、逆に、そう表現して、必要な信号の加工方法を教え
こんでやりさえすれば、「数」と同様に、「文字」を理解して、取り扱っている
フリをさせる事はできる、という事になります。
 
ただ、毎度ここまで書くのは大変ですから、CPUには、「数」(ただし2進数)
が解る、という事にして、話を進める事にします。前段は、この論法では「文字
を2進数に対応させる事ができれば、文字は扱える」と表現できます。
 
2.人間に「2進数」は理解できるか?
 
高校の数学でやるくらいですから、人によって、得意・不得意はあるでしょうが、
できます。ただし、10進数のように使いこなすというのは、かなり難しいため、
普通の数を扱う場合、コンピュータに、10進数2進数の変換手順を教えておいて、
毎度変換して使う事にした方がずっと便利です。
 
ところが、文字コードなどの場合だと、2進数的な構造(大袈裟ですが、何桁目
にはこういう意味、何桁目にはああいう意味がある、というような事)を持って
いますので、10進数だけでは、却って解りにくい部分が出てきます。
 
とは言え、2進数そのままでは、桁数も多すぎるし(2進数1桁=1bit、つまり
16bitなら16桁必要)直感的に解りにくい、こういう場合、技術屋さんの世界では
2進数を何桁か分ずつまとめた、8進数(1桁3bit)16進数(1桁4bit)などが
使われます。見た感じでは、8進数の方が解りやすそうで、昔はこちらを使う方
が主流でしたが、現在、ほとんどのデータは、1byte=8bit単位で扱われるように
なってきていますから、以降は、これと相性のいい(2桁で丁度1byte)16進数の
方に統一して表現する事にします(補助的に10進数・2進数も使います)
 
表し方には、細かい流儀もありますが、ここでは、例えば「A3E2H」というよう
な形で表す事にします。最後の「H」は16進数(Hexadecimal)を表す目印、各桁
のアルファベットは、10以上の数を、A=10,B=11,C=12,D=13,E=14,F=15 という
形であらわしたものです。つまり「A3E2H」が、10進数でどんな数かと言うと、
A3E2H = 10*16*16*16 + 3*16*16 + 14*16 + 2 = 41954 という事になります。
(1234 = 1*10*10*10 + 2*10*10 + 3*10 + 4 というのと同じですね)
 
3.コンピュータにとって「文字」とは何か?
 
コンピュータが扱える(フリをしている)「文字」とは、「人間にとっての文字」
の中で、ふさわしい規則にしたがって、2進数と対応がつけられたもの、もう少し
簡単にいうと、きちんと通し番号が振られたもの、という事になります。この個々
の通し番号を「文字コード」、通し番号全体+振っていく規則の事を「文字コード
系」と呼ぶわけです。
 
ただし、この説明には、少し抜け落ちがあります。「人間にとっての文字」では
ないのに、コンピュータにとっては「文字」であるものが存在する点です。
 
代表選手は、スペース・空白文字ですが、それ以外にも、コントロールキャラクタ
とか制御文字と呼ばれるものがあります。幾つか代表的なものを挙げてみますと、
 
・09H(  9) タブ(TAB=Tabulation)
・0AH( 10) 改行(LF=Line Feed)
・0CH( 12) 改頁(FF=Form Feed)
・0DH( 13) 復帰(CR=Carriage Return)
・1AH( 26) ファイル終了(EOF=End Of File)
・1BH( 27) エスケープ文字(ESC=Escape)
・7FH(127) バックスペース(BS=Back Space)
 
等があります。
 
機械式でも電動式でも、英文タイプライタを使ったことがあれば(カナタイプでも
いいですが)CR とか LF の意味は解りやすいとおもいますが、タイプライタの紙を
巻き付けた部分(プラテン)が、一文字打鍵する毎に左へ動く、一行終わるとプラテン
を右端に戻して(復帰)紙を上に巻き取る(改行)動作が行われます。普通は、復帰操作
をすると、改行も自動的に行われるので、セットで考えても構いませんが、改行幅は
調整できる、つまり全然紙送りしないような設定にもできるので、本来は、別の動作
と考えておくべきでしょう。
 
こんな大昔の話を何故するか、というと、ここにも、既に、文字コードの非互換性
問題が含まれているからです。それは・・・
 
MS-DOS では、行の終わりには、CR と LF の両方のコードを(順番はどちらでも
いいが、普通、CR, LF の順で)書く必要がありますが、UNIX系では、LF だけ、
inserted by FC2 system