Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報

トップ  >  文字コードについて

文字コード体系間の文字コード変換について

今まで説明してきたように、いろいろな文字コード体系があります。おまけにたいていの場合、コンピュータメーカーやOSの製作者によって都合良く解釈されて独自拡張されていたりします。細かい差異を考慮すると説明したもの以外にもたくさんの文字コード体系があるでしょう。

文字コード体系によって、同じ”あ”という文字でも文字コードは異なることがわかります。
使用している文字コードが違うコンピュータ間で、文字情報の授受を行うためには、受け取ったコンピュータ側が認識できる文字コードに変換しなければなりません。

一番簡単なのは市販の文字コード変換ソフトを使うことで、変換する文字コードの種類によってはフリーソフトもあります。(でもNEC内部コードみたいなマイナーなもの用は無さそうです。)

でも、自分の作ったソフトに文字コードの変換機能を入れたいとか、そういう人もごく一部にいるのではないかと思います。
とりあえず、私もちょっとだけ作ったことがあるので、たいした内容ではありませんが、その経験から。

シフトJISからJIPSへの変換処理をいきなり作ってもいいですが、それよりもシフトJISとJIS漢字コード間の変換処理、JIPSとJIS漢字コード間の変換処理の2つを作って、シフトJIS→JIS漢字コード→JIPSとJIS漢字コードを間に置いて変換したほうが、後々便利です。
どの文字コード体系も、JIS漢字コードとの間の変換ルールなら存在します。
それに後でシフトJISからJEFの変換が必要になったときに、シフトJISからJIS漢字コードの変換部分はそのまま流用できます。

まず、JIS漢字コードに準拠している文字コードについて。
一部の文字コード体系を除いて、JIS漢字コードに準拠している部分があります。この部分の文字コードの相互変換は比較的簡単です。
JIS漢字コードとJEF、KEIS、EUC、シフトJISは、計算式を使って変換が可能です。JIPSとIBM漢字、ユニコードは変換表(プログラム化するなら配列を作ればいい)を使います。JIS漢字コード準拠部分の文字は、一部の例外を除いて可逆変換可能です。

JISコード準拠の文字以外にだいたいの文字コード体系には独自拡張部分の文字がありますが、その部分の変換は大変面倒で全部変換表が必要です。かつ変換先に対応する文字コードが無かったり(無いから独自拡張しているのだから、少なくともJIS漢字コードには無い。)して、不可逆変換(一度別の文字コードに変換して、元の文字コードに戻しても、同じデータにならない)になることも多いです。(だからフリーの変換ソフトとかは、JISコード準拠部分の文字コードだけ変換できるという制限があったりします。)

いわゆる外字というものがあります。だいたいの文字コード体系には、外字領域というところが用意されており、ここに誰でも好きな文字を登録することができます。そのコンピュータに無い文字を使いたいときは、自分で登録して使ってください、というものです。”誰でも好きな文字を登録”というのがミソで、何の法則性も無いので、まず変換が困難です。
もし変換が必要であれば、その文字を登録した誰かか、運の悪いその代理者が、変換規則を考えて計算式なり変換表なりを作らなければなりません。おまけにその文字コードが無いので外字に登録したのだから、変換先にもその文字が無い場合も大なので、そうならば変換先にも同じ文字を外字として登録しなければならないかもしれません。

あともうひとつ考慮に入れるべき点として、各文字コードのベースとなっているJISコードには、年度によって差異があるということです。(JIS78とJIS83とか)
違うベースのJISコードを採用しているなら上記の変換に加えて、年度間の差異についての変換も行う必要があるかもしれません。有名なところでは、JIS78とJIS83間での文字の形の入れ替えなどがあります。
私自身はここの変換処理まで作ったことはないですが、上のようにJIS漢字コードを中間に挟むような作りにしているとしたら、JIS漢字コードにしたところで年度間の変換を行えばいいかもしれません。