[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:10229] Re: etch ORCA でのデータ移行



結縁晃治 先生 武藤 健志 様 皆様  hskitagawaです。

 続けさせていただきます。基本的な原理は前回に説明したとおりです。どこから始めてもよいのですが、後が続けやすいので、ここはJISからはじめましょう。

1.JIS
 2バイトで漢字の他、全角記号、全角数字、全角ギリシア文字、ロシア文字等に対応させるものです。2バイト(xxyy)でxxが21-7Eの範囲で、yyも21-7Eの範囲です。つまり、2121、217E、7E21、7E7Eを頂点とする正方形内に位置する2バイト数の領域と言うことです。図にすればこんな感じです。

    2121 ------------------------------------------------------- 217E
     |                                                             |
     |                                                             |
     |                                                             |
     |            JIS全角記号,数字,第1水準,2水準漢字             |
     |                                                             |
     |                                                             |
     |                                                             |
    7E21 ------------------------------------------------------- 7E7E

 もうお分かりですね。第1、第2バイト共に「1バイト文字で使用されるコード」ですよね。だから、このままではコンピュータは1バイト文字と区別できないわけです。そこで、前回のとおり「2バイト文字(漢字)データの初めと終わりを特殊なコードではさむ」 
わけです。実際には漢字の始まりを示すのは ESC $ B (0x1B, 0x24, 0x42) で、漢字終了は ESC ( B (0x1B, 0x28, 0x42) と3文字コードです。ここで、ESC は前回述べましたように、1バイト文字でも「制御コード」ですので、通常の文字や記号と間違うことがないところがミソです。これでコンピュータに「ここから漢字だぞ」あるいは「ここで漢字は終わりぢゃ」と分からせることができます。

2.EUCJP
 2バイトで漢字の他、全角記号、全角数字、全角ギリシア文字、ロシア文字等に対応させるものです。2バイト(xxyy)でxxがA1-FEの範囲で、yyもA1-FEの範囲です。つまり、A1A1、A1FE、FEA1、FEFEを頂点とする正方形内に位置する2バイト数の領域と言うことです。図にすればこんな感じです。

    A1A1 ------------------------------------------------------- A1FE
     |                                                             |
     |                                                             |
     |                                                             |
     |            EUCJP全角記号,数字,第1水準,2水準漢字           |
     |                                                             |
     |                                                             |
     |                                                             |
    FEA1 ------------------------------------------------------- FEFE

 フーンと感心しないでよく見てください。FE - A1 = 5D また 7E - 21 = 5D ですから2つの正方形は合同なんです。実は、EUCJPはJISを平行移動しただけなんです。どこへ?見ればわかるように「1バイト文字で使用されないコードの領域に」です。かしこーーい!どうしてJISをそこへ持って行かなかったんだい?って、もう半角カナも使ってることだし、色々と歴史的事情もあったようなので...へへへ。

 *** 実は、EUCJPにも「半角カナ領域」があるんです。8EA0-8EDFなんですけどね。私も最近知ったばかりです。昔はこんなんなかったんですけど。使ってもよろしいが、全角と半角の併用になるので、おすすめできません。

 ここで、JISとEUCJPの変換方法を。JISとEUCJPは1対1に対応します。(この対応が大事です。これが保証されないと相互変換が成立しなくなります。)
 (1) JIS --> EUCJP :  EUCJP = JIS + 0x8080
 (2) EUCJP --> JIS :  EUCJP = JIS - 0x8080

 次は、いよいよSJISにとりかかります。