我可以从以下位置发送消息Java
to Websphere MQ
on AS400
。如果我从以下位置发送消息WinXP
,如果我使用任何可访问的,没有区别Locale
,包括完整的语言本地化;英语也没有问题Locale
。对于正确编码来说重要的只是此代码行:
msgId.characterSet = 1208;
不幸的是,它无效。我想要从中获取消息的情况存在差异MQ Queue
.
Exception occured while to message buffer :
java.io.UnsupportedEncodingException: Cp870
来自代码(从 try - 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) {
}
please
CP870 是 EBCDIC 主机代码页。发生异常时,您将 Windows 更改为哪个区域设置?你还用吗msgId.characterSet = 1208;
本地更改后? Java 库似乎无法将 CP870 中的传入消息转换为您当前的语言环境。
更改区域设置时检查 Windows 代码页是什么,并查看 1208 是否正确.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)