0

私のシステムWebsphere MQMainframeキューからのデータを読み取ります。アプリケーションが読み取るデータはEBCDIC形式です-

以前は問題なく動作していましたが、今年初めに jdk1.6 に移行しました (これがこの問題の原因かどうかは不明です)。

" " の EBCDIC 表現である 40 として 1 つの変数値を取得していますが、それは隠蔽されていません。

問題は、MQ またはメインフレームがこの変換を担当する必要があるかどうかです。以下の変換を行っていますが、それは機能していません -

                        UnicodeFormat = "CP037";
                        byte[] b;
                        b = UninterpretedRowdata.getBytes("Cp037");
                        //System.out.println("DEST CP : "+UnicodeFormat);
                        UnicodedRow = new String(b, UnicodeFormat);

前もって感謝します。

4

2 に答える 2

0

エンコーディングを変換する次のコードを書きました。

public class Converter{

    public static void main(String[] args) {

        Charset charsetEBCDIC = Charset.forName("CP037");
        Charset charsetACSII = Charset.forName("US-ASCII");

        String ebcdic = "(((((((";
        System.out.println("String EBCDIC: " + ebcdic);
        System.out.println("String converted to ASCII: " + convertTO(ebcdic, charsetEBCDIC, charsetACSII));

        String ascII = "MMMMMM";
        System.out.println("String ASCII: " + ascII);
        System.out.println("String converted to EBCDIC: " + convertTO(ascII, charsetACSII, charsetEBCDIC));
    }

    public static String convertTO(String dados, Charset encondingFrom, Charset encondingTo) {
        return new String(dados.getBytes(encondingFrom), encondingTo);
    }
}
于 2017-02-02T17:06:21.617 に答える