[PHP-users 22088] Re: EBCDIC2

Kazumasa Gotoh kgotoh @ cic-kk.co.jp
2004年 6月 9日 (水) 11:31:59 JST


From: Tomoyuki Asakawa <tom @ asakawa.ne.jp>
Date: Wed, 9 Jun 2004 01:17:05 +0900

> > PHPのマニュアルにあった関数を多少カスタマイズして以下のよう
> > につくりましたが、期待通りの結果を得られません。特に2バイト
> > 文字(漢字)はできません。
> 
> EBCDICの漢字って、一般論では語れないはず
> (15年くらい前の記憶。。。)

「MVS 系 OS で使われている漢字」は存在しますが、「EBCDIC の漢字」
というものは存在しません。

EBCDIC で定義されているのは英字だけであり、いわゆる半角カタカナも
含まれません。

日本ではそれでは不便なので、日立、富士通、日本 IBM などでは
EBCDIC に対して独自の拡張をしています。
日立の場合だと EBCDIK や拡張 EBCDIK (通称 EBCDIK' - ケーダッシュ - )
などがそれにあたりますが、メーカ間の互換性はありません。

漢字コードについては、日立では KEIS コードというものが定義されて
います。富士通や日本 IBM のものは名前は覚えていませんが、やはり
それぞれ独自のものです。

これではメーカ間でのデータ通信ができないように見えますが、
通信データ上では各社とも 1バイト文字は JIS8 単位で、漢字は
JIS 漢字に変換してから送り出すという仕様になっているため
お互いのデータ交換が可能になります。

コンバータを作るには、あさかわさんのおっしゃるように各メーカの
コード系の資料を入手する必要があります。
とは言え、社外秘資料みたいに入手しにくいものではないので、
マニュアルを購入ないしは入手すればよいだけです。

1バイト文字については要素数 256個の変換テーブルを用意するしか
ありませんが、漢字については SJIS <-> JIS 変換のように一定の
規則にしたがって変換が可能です。

# 多少の例外はあった気がしますが、それは少数なので例外として
# 処理すればよいわけです。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
                             後藤和政    kgotoh @ cic-kk.co.jp


PHP-users メーリングリストの案内