文字コードとは何か(入門編)
この項は、恐らくはプログラムを書く上で注意すべき「文字コード」、その策定過程にふれ、且つ重要性を説く物です。普段よくわからずにこれを使用しますが、そもそもこれは何であるかを理解する機會は少ないと云はざるを得ないでせう。理解が進めば、文字化けを修復できる技術程度は直ぐ身に附き、文字コードの變換を實裝できるやうになります。
英語では charset 、則ち「character set」である。char といへば文字列を連想するだらうけれど、原義は「刻みつけられた印」を意味する character は個性などを意味する。文字コードとしての文字とはコード表として完成させ(刻みつけ)、また文字データとは HDD やメモリに書きこまれた(刻まれた)バイナリのことである。set は状態を固定する意味の他動詞であり、附表にある字の位置を決め變更しないこと、バイナリを HDD 領域に確りと固定する事やファイルで確定することを意味するのであらう(ただし、後述のJIS漢字は字體が變はつた事がある)。
で、長つたらしいことは兎も角として、文字コードは一意(unique)でなければならない。バイナリを解析して文字を表示する時に、違ふ文字であるのに同じコードとなつて衝突することを囘避せねばならない。そこが重要なのであり、また文字コードの設計に係はる諸問題なのだ。
尤も最初期に制定された ASCII コード、A が America の A であることからわかるやうに、これは英語圏で必要な文字と「制馭」文字を加へた物であつた。文字の多い日本などの漢字圏、アクセント符號やセディーユを有する印歐系のフランス・ドイツ語・et cetera、スラブ系に多いキリル文字、セム系のアラビア文字、かういつた地域は全く考慮されてはゐなかつた。これが今日の多コード時代を生み出した。
勿論、反駁の餘地がある。「超漢字」でも述べるが、當時の記憶容量といつた物は實に矮小であつた。であるから、コードで綴られた書類は輕いことが求められた。多くの地域を抱括する爲にコード體系の肥大化を避け(一意に見分けるには最低限、文字數分以上の數を使つてコードを決定する必要がある;後述)、なるべく簡略・小型化して生み出されたのが今のコードなのである。
今、時代は Unicode が主流になりつつあり、TRON での「超漢字」のやうな多文字をサポートする傾向にある。
ASCII(American Standard Code for Information Interchange)は七桁の二進數で文字を表した。則ち 7bit の文字であるが、一般のCPUでは 1byte が 8bit であり、實際には 8bit コードとして機能する。八桁目は必ず 0 になる特性があつた。制馭文字はハード制馭の文字であり、今は意識する事が少ないであらう。改行もこれに含まれる。
日本での文字コードは、漢字を考へても(萬を越える)相當な多さがあり、当用漢字や表外漢字、書體をどうするかなど多くの問題を抱へた。
そんな中で策定されたのが JIS漢字コード の體系であり、昭和五三年(七八年)に策定されたJIS C 6226:1978 の漢字の一覽「第一水準漢字」である。區點コードはこれを參照するが、今ではユニコードとUTF-16の關係がこれにあたるであらう。順に「第二水準漢字」が昭和五八年(八三年)に策定、近年になり平成十二年(〇〇年)には「第三水準漢字」、追つて平成十六年(〇四年)には「第四水準漢字」が決定された。
JIS漢字コード表の思想は、「常用(当用)」「表外」に拘らず同じ字であつても字形が異なれば掲載し、書體は印字する活字(フォント)に一任し、猶且つ文字を網羅的に記載することにあつた。当用であれ表外であれ、戰前の文章を扱ふ必要性があれば「旧字(舊字)」を扱ふ必要がある。当用だけでは是を滿たすことはできず、更に云ふと岡山の岡などは最近まで常用漢字になかつたので、常用漢字だけにすると是を網羅できなかつた。また、技術分野では特殊な記號を用ゐることもあるから、これもまた別に決定して表に記載した。一部で惡名高い擴張された「当用漢字」も登場した。最近まで簡化に熱心だつた新聞社の名前から、朝日文字とも呼ぶ。
さて基本的には表で記した順番にバイナリを決定するのが樂であり、多くの文字コードでは固まつて決定される。ASCII ではAからZまで連續してゐるやうに、極自然な事である。
JIS漢字コード表を元に日本では ISO-2022-JP(JA[日本語]用ではなくJP[日本國]用であるのが特徴)、Shift_JIS(及びその亞種)、EUC-JP(Extended Unix Code の日本國版)などが次々と「バイナリ」の實裝として策定された。JIS漢字コード表は飽くまでも表であり、たとへば ASCII との一意性を保證するものではなかつたからである。
一意でありながら尤もかさ張らない表現を考へれば、今の情況に歸結する。畫像にしても音聲にしても、バイナリ單位で識別させるには、文字コードとして決める以上に效率的な事は無い。
その方法論を「偉い人」がアーダコーダ議論するわけ。その「偉い人」もまた、色々な批判を浴びる訣だから、なかなか難儀な話である。
ASCII が昭和三八年(六三年)、第一水準漢字が昭和五三年(七八年)に決定されたが、流石に米國でも多文字化の必要性が謳はれ提唱されたのが Unicodeである。最初は 2byte 文字として始まつたが、壓倒的に文字が足りない爲に 3byte、4byte と擴張され今に至る。
具體的な實裝は UTF-8 のやうに策定されたものが實裝されるが、各社好き勝手やつたせいで、何となく互換性のない部分がある。
同じ意味・目的の文字ならば、統合するのが Unicode の方針である。CJK領域などがさうであり、是は大いに紛糾した。「超漢字」では、日本の漢字、支那の漢字、といつたやうに同じ文字にもメタ的な意味をコードに持たせてゐるのが特色であるが、一方で Unicode ではこれを統一した。果してどれが正しいのかは未だ謎である。文字が使はれた國や言葉といつた物が、筆跡のやうに殘すべきなのか、どうなのか、これは多文字化の課題の一つである。