プロが教えるわが家の防犯対策術!

PC上のデータに含まれる機種依存文字((1)(2)IIIなど)をEBCDICコードを使用しているホスト機にファイル転送をする時、表示可能な文字に変換を掛けようと思っています。
Perlで変換を行うところまではなんとか辿り着きました。

ところが、(1)を1.に変換すると、PC上では文字数は変わりませんが、ホストにアップロードした時に、シフトコードが入るために、最悪前後に全角文字が入っている場合は、2バイトのプラスになり、ホスト上のデータベースにインポートする時にエラーを引き起こしてしまいます。

これを防ぐため、Perl上で、文字コード変換を行う時にシフトイン&シフトアウトの発生した場合の文字列長のチェックを行いたいのですが、全角文字と半角文字の識別と長さのカウントを行う方法、なにか参考になるサイトがありましたら、教えて頂けると助かります。

よろしくお願いします。

A 回答 (1件)

ググると、


「ebcdic->sjis変換で失われたシフト文字分の空白をEncode::CJKConstantsで復活」
http://d.hatena.ne.jp/end0tknr/20090222/1235302471
という記事がありました。

シフト文字分の空白を付け加えて文字数(バイト数??)をカウントするという方法でうまくいかないでしょうか。
    • good
    • 0
この回答へのお礼

コメント有難うございました。
まさにこのまま使えますね。
非常に助かりました。

お礼日時:2013/01/07 09:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!