Java
에서 Websphere MQ
까지 메시지를 AS400
으로 보낼 수 있습니다. WinXP
에서 메시지를 보내면 전체 언어 현지화를 포함하여 액세스 가능한 Locale
을 사용하면 차이가 없습니다. 영어 Locale
에 문제가 없습니다. 올바른 인코딩의 중요성은 다음 코드 행에만 있습니다.EBCDIC에서 유니 코드/UTF8로 문자열 변환
msgId.characterSet = 1208;
불행히도 유효하지 않습니다. 이 메시지를 MQ Queue
에서 가져 오려는 경우에 차이가 있습니다. 나는 (언어 팩의없이 영어) 윈도우 OS에서 MQ Queue
에서 메시지를받을 경우
- , 나는
String
형태로MQ Queue
에서 메시지를 취할 수 있어요. (- 캐치 - 드디어 블록 시도에서 제거 balast) 윈도우 OS는 언어 팩의 일부 현지화 전체 인 경우 - , 나는 예외 코드에서
Exception occured while to message buffer : java.io.UnsupportedEncodingException: Cp870
를 수신하고
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) {
}
하십시오
여기에 내 질문에 내가
에서MQMessage#getBytes
Encode
하지 어떤 문제를 약String
변환,이되는 몇 가지 매개 변수 (들), 내가
MQMessage#readLine()
에서
String
을 위해이 그리워 무언가가
도움말 [여기] (http://www-304.ibm.com/support/docview.wss?uid=swg1IZ86625)? – trashgod
링크를 사용해 주셔서 감사하지만 [이 문제가 있습니다] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4296969)와 같이 최종 사용자 PC가 어떤 문제라도 다른 UnsupportedEncodingException을 얻었습니다. 지금은 아무 생각이 없습니다. – mKorbel
@ J-16 SDiZ는 메시지 가져 오기 옵션을 덮어 쓰므로 실제로 메시지 페이로드의 변환을 요청하지는 않습니다. 그러나 메시지 헤더는 항상 변환되며 오류가 발생하는 곳입니다. 이 변환은 API 호출이 아닌 QMgr의 CCSID 설정에 기초합니다. QMgrs CCSID는 무엇으로 설정되어 있습니까? –