Converter String de EBCDIC para Unicode / UTF8
Eu sou capaz de enviar mensagens deJava
paraWebsphere MQ
emAS400
. Se eu enviar mensagens deWinXP
, não há diferença se eu usar qualquerLocale
, incluindo localização completa de idiomas; nem há problema com o inglêsLocale
. Importante para codificação correta é apenas esta linha de código:
msgId.characterSet = 1208;
Infortunadamente, não é válido. Existem diferenças no caso que eu quero levar a mensagem deMQ Queue
.
No caso de eu receber uma mensagem deMQ Queue
do sistema operacional Windows (inglês sem qualquer pacote de idioma), sou capaz de levar mensagens deMQ Queue
emString
Formato.
No caso de o sistema operacional Windows estar totalmente localizado com algum pacote de idiomas, estou recebendo uma exceção
Exception occured while to message buffer : java.io.UnsupportedEncodingException: Cp870
de código (removido balast de try - catch - finally block)
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) {
}
por favor
Existe algum parâmetro (s), algo que eu sinto falta lá para tomarString
deMQMessage#readLine()
minha pergunta aqui é apenas sobreString
conversão,
Eu não tenho nenhum problema comEncode
deMQMessage#getBytes