Java
からにメッセージWebsphere MQ
を送信できますAS400
。からメッセージを送信する場合、完全な言語ローカリゼーションを含むWinXP
、アクセス可能なものを使用しても違いはありません。Locale
英語にも問題はありませんLocale
。正しくエンコードするために重要なのは、次のコード行だけです。
msgId.characterSet = 1208;
残念ながら、それは有効ではありません。からメッセージを受け取りたい場合には違いがありますMQ Queue
。
MQ Queue
Windows OS(Language Packを含まない英語)からメッセージを受け取った場合MQ Queue
、String
フォームからメッセージを受け取ることができます。一部のLanguagePackでWindowsOSが完全にローカライズされている場合、例外が発生します
メッセージバッファ中に例外が発生しました: java.io.UnsupportedEncodingException:Cp870
コードから(try-catch-finallyブロックからbalastを削除)
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