end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

iconvでsjisEBCDICの変換。機種依存文字の変換は?

機種依存文字以外の変換であれば、問題なさそう

as400(System i)とfile交換する場合、sjis<->EBCDICの変換を行う必要があります。perl文字コード変換を行う場合、Encode.pmやJcode.pmを使用しますが、sjis<->EBCDICの変換を行うには、iconvを使用した方が扱いやすそうです。

$ cat file_s.txt | iconv --from-code=IBM943 --to-code=IBM930 > file_eb.txt

※iconvで指定するencodingは、sjis:SJIS=IBM943=CP932、EBCDIC:IBM930のようです

以下は「漢字」をsjis->EBCDICの変換結果し、odで表示したものですが、シフト文字(0e,0f)があることからも、EBCDICに変換できていることが分かります。

[endo@colinux tmp]$ cat file_eb.txt | od -tx1c
0000000 0e 4f 58 48 f2 0f
        016   O   X   H 362 017
0000006

ただし、私の試した範囲では「㈱①」等の機種依存文字の変換はできませんでした。--from-codeや--to-codeの指定が悪いのだろか?

System i Access for linuxは内部的にiconvを使用してない?

以前、System i Access for linuxas400のdbにODBC接続した際は、機種依存文字の変換も問題なかったようですが、System i Access for linuxは内部的にiconvを使用していないのでしょうか?

http://d.hatena.ne.jp/end0tknr/20080502/1209684324