linux mq ebcdic,将字符串从EBCDIC转换为Unicode / UTF8

我能够从发送消息Java到Websphere

MQ上AS400。如果我从发送消息WinXP,则使用任何可访问性Locale(包括完整的语言本地化)都没有区别;英语也没有问题Locale。正确的编码很重要,只有以下代码行:

msgId.characterSet = 1208;

不幸的是,这是无效的。我要从中获取消息的情况有所不同MQ Queue。

在我得到消息的情况下MQ Queue,从Windows操作系统(英语,没有任何语言包),我能够把消息来自MQ Queue于String形式。

如果Windows操作系统使用某些语言包进行了完全本地化,则我将收到一个例外

消息缓冲区发生异常:

java.io.UnsupportedEncodingException:Cp870

从代码中删除(从尝试中删除balast-catch-finally块)

try {

Class.forName("com.ibm.mq.MQEnvironment");

MQEnvironment.hostname = hostname;

MQEnvironment.port = port1;

MQEnvironment.channel = channel;

MQEnvironment.userID = userID;

MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);

try {

qmgr1 = new MQQueueManager(qmanager);

MQGetMessageOptions gmo = new MQGetMessageOptions();

int openOptions2 = MQC.MQOO_INPUT_SHARED;

gmo.options = MQC.MQGMO_NO_SYNCPOINT; //Set no sync point

gmo.options = MQC.MQGMO_CONVERT; //Handles ASCII/EBCDIC

gmo.options = MQC.MQGMO_WAIT; //Wait until message arrives

gmo.waitInterval = 3000;

getq = qmgr1.accessQueue(responseQueue, openOptions2);

while (true) {

try {

responseFromQUEUE = "";

MQMessage msgId = new MQMessage();

//putmsg.characterSet = 437;// Set code page to ASCII

//putmsg.characterSet = 1200;// Set code page to UNICODE

msgId.characterSet = 1208;

getq.get(msgId, gmo);

String str = msgId.readLine();

//responseFromQUEUE = CpConv.tf870to1250(msgId.readLine());

//own EncodePage doesn't works too

if (responseFromQUEUE.length() == 0) {

break;

}

} catch (MQException mqx) {

if (mqx.reasonCode == EMPTY_QUEUE) {

} else {

}

}

}

} catch (MQException mqx) {

} finally {

}

} catch (IOException ex) {

} catch (ClassNotFoundException e) {

}

是否有一些参数,我想String从那里拿走一些MQMessage#readLine()

我的问题只是关于String转化,

我没有任何问题与Encode从MQMessage#getBytes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值