Events 数据转换和编码CP037

Events 数据转换和编码CP037,events,encoding,ibm-mq,mainframe,Events,Encoding,Ibm Mq,Mainframe,我的系统从webspheremq读取数据,该数据来自Mainframe队列,应用程序读取的数据是EBCDIC格式的- 早些时候它工作得很好,我们在今年早些时候迁移到jdk1.6(不确定这是否会导致此问题) 我得到一个变量值40,它是EBCDIC表示的“”,但它不是隐蔽的 那么问题是MQ或大型机应该负责这种转换吗?因为我们正在进行以下转换,但这不起作用- UnicodeFormat = "CP037";

我的系统从
webspheremq
读取数据,该数据来自
Mainframe
队列,应用程序读取的数据是EBCDIC格式的-

早些时候它工作得很好,我们在今年早些时候迁移到jdk1.6(不确定这是否会导致此问题)

我得到一个变量值40,它是EBCDIC表示的“”,但它不是隐蔽的

那么问题是MQ或大型机应该负责这种转换吗?因为我们正在进行以下转换,但这不起作用-

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

提前谢谢。

我不知道你为什么要自己做转换。奇怪的MQ为您进行转换要好得多。i、 e.RTM

MQ进行转换需要两件事:

1) 消息需要将MD.Format字段设置为MQC.MQFMT_字符串

2) 使用convert发出MQGet API调用

i、 e


我编写了以下转换编码的代码:

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);
    }
}

这篇文章实际上是在它被标记为副本的那篇文章之前制作的;那篇文章被迁移到这里。我删除了那个;伙计们,请不要把这个当作那个的复制品来关闭。谢谢谢谢你检查这个。。。我们在这里使用JMS。。将检查JMS中的相同设置。希望有帮助。
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);
    }
}