Convierte una cadena de EBCDIC a Unicode / UTF8
Soy capaz de enviar mensajes desdeJava
aWebsphere MQ
enAS400
. Si envío mensajes desdeWinXP
, no hay diferencia si utilizo alguna accesibleLocale
, incluyendo la localización completa del idioma; ni hay problema con el inglesLocale
. Importante para la codificación correcta es solo esta línea de código:
msgId.characterSet = 1208;
En desgracia, no es válido. Hay diferencias en el caso de que quiero tomar el mensaje deMQ Queue
.
En el caso de que reciba mensaje deMQ Queue
desde el sistema operativo Windows (inglés sin ningún paquete de idioma), puedo recibir mensajes deMQ Queue
enString
formar.
En el caso de que el sistema operativo Windows esté completamente localizado con algún paquete de idioma, recibo una excepción
Exception occured while to message buffer : java.io.UnsupportedEncodingException: Cp870
del código (se eliminó el balasto del try - catch - finalmente se bloquea)
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
¿Hay algún parámetro (s), algo que echo de menos para tomarlo?String
desdeMQMessage#readLine()
mi pregunta aquí es sólo acerca deString
conversión,
No tengo ningún problema conEncode
desdeMQMessage#getBytes