Escribir un fichero en UTF-8 con Java + Trato de encodings en Message Broker


Para escribir un fichero en UTF-8 podemos usar el siguiente código, el cual hace uso de un FileWriter:

El problema origen es una aplicación que envía en formato UTF-8 hacia Message Broker (WMB) y el cómo tratar los mensajes dentro de WMB.

Para ello, hemos tenido que simular el envío de mensajes UTF-8 a WMB y para comprobarlo, necesitamos pasar a fichero el contenido del mensaje, ya que el depurador de Java nos muestra caracteres Windows, y por tanto, si usamos en el mensaje de entrada una “á” por ejemplo, no lo veríamos correctamente, sin embargo, al pasarlo a fichero, sí que saldría bien.

Otra buena lectura para ver cómo trata WMB los encodings, sería esta: How does the message broker handle XML message encoding.

NOTA: En WMB existen varios tipos de encoding: a nivel de QManager, a nivel de cabecera MQMD y en las cabeceras del propio mensaje en caso de un XML (ignorado debido a que WMB trata el fichero como puro texto/caracteres).

La recomendación es desmarcar el checkbox de “Convert” en los nodos MQInput para dejar que las aplicaciones origen indiquen en la cabecera MQMD el CCSID/Encoding al que se desea convertir el mensaje.