QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

SHIFT-JIS ⇔ EBCDIC + JIS漢字 の変換方法(VB.NET)

VB.NET を用いて
SHIFT-JISで書かれたファイルを EBCDIC + JIS漢字 のファイルに変換したいのですが、
.NET Framework(1.1) を用いてそういった変換は可能なのでしょうか。

調べた限りでは文字コードの混在したファイルを作る方法が見つかりませんでした。
調べ方が足りないのかもしれませんが、「こうやったら出来そう」といったアドバイスを
いただけると嬉しいです。

どなたかご存知の方おられましたら、よろしくお願いします
[ メッセージ編集済み 編集者: 最大40 編集日時 2004-06-22 13:17 ]

質問者:最大40

回答

汎用機の世界では、昔から、コード変換物はあるのですが
Web検索にはほとんど出ないかもしれません。

可変長テキスト?固定長レコード? 漢字IN/OUTを 使う/使わない
など EBCDIC + JIS漢字 といっても、バリュエーションあります。

EBCDIC もバリュエーションありました。コードページは?
英小文字、カナ、ユーザー外字もあるかも

●調べた限りでは文字コードの混在したファイルを作る方法が見つかりませんでした。
でしょう。

自作するなら、バイトで読んで変換です。
UNICODE以前のソースを発掘すると参考になるかも、
日本語文字列関数とか、JStringなんとかLib。

速度重視でないなら、SJIS→UNICODE→EBCDIC になります。
Get1文字→文字種判定→それぞれ文字変換→バイトで詰めてゆく。
文字→バイト配列 が判れば、1文字ループです。

====================================================
EBCDIC .NET Framework
で検索するとすぐ出ました。
http://www.atmarkit.co.jp/fdotnet/dotnettips/010str2byte/str2byte.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html
コード表の細かいことを気にしなければ,切り替えの処理を作るだけで。

string str = "ESC切り替えのJISへ変換";
Encoding sjisEnc = Encoding.GetEncoding("iso-2022-jp");
byte[] bytes = sjisEnc.GetBytes(str);
Console.WriteLine(BitConverter.ToString(bytes));

1B-24-42-25-37-25-55-25-48-1B-28-42-4A-49-53-1B-24-42-24-58-4A-51-34-39-1B-28-42

IBM EBCDIC 日本語符号化文字集合
http://www.asahi-net.or.jp/~ez3k-msym/charsets/ebcdic.htm
[ メッセージ編集済み 編集者: MMX 編集日時 2004-06-22 15:17 ]

投稿者:MMX

編集 履歴 (0)

MMXさん

すばやいレスポンス有難うございます

汎用機の世界では、昔から、コード変換物はあるのですが

Web検索にはほとんど出ないかもしれません。

今回初めてホスト相手のプログラムを作ることになりまして、悪戦苦闘しています
特にコードに関してはややこしいですね
ちなみに今回のフォーマットは固定長でカナ・漢字(IN/OUT含)あり
EBCDIC + JISもしくはEBCDIC + IBM漢字 といったものです。

速度重視でないなら、SJIS→UNICODE→EBCDIC になります。

Get1文字→文字種判定→それぞれ文字変換→バイトで詰めてゆく。

文字→バイト配列 が判れば、1文字ループです。

なるほど・・。やはり簡単に行きそうにありませんね
これから文字コードと.NETについてもっと勉強して頑張ってみようと思います

大変参考になるアドバイス、有難うございました
[ メッセージ編集済み 編集者: 最大40 編集日時 2004-06-22 15:15 ]

投稿者:最大40

編集 履歴 (0)

その仕事は、ミドルウェアとかに付属になっているのが普通です。
カタログを読むとたいていは載っています。
例:Toolkitには、以下のような特長があります。
http://www.sw.nec.co.jp/soft/acos4/product/aat/point.html

自作する場合の危険性は、拡張外字とかの検証です。

投稿者:MMX

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。