/ / Write Message to MQ como ASCII usando C # - c #, ibm-mq

Escrever mensagem para o MQ como ASCII usando c # - c #, ibm-mq

Eu tenho uma string que está na forma de XML ou qualquerstring para essa matéria e estou recebendo a BOM quando ela é gravada no MQ. Eu estava tentando converter a seqüência de caracteres para ASCII no aplicativo c # mas ainda mostrou na mensagem no MQ. Eu pensei que eu poderia usar o método de codificação no MQMessage ()

MQQueueManager queueManager = new MQQueueManager();
queue = queueManager.AccessQueue(QueueName,
MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
message = strInputMsg;
queueMessage = new MQMessage();
queueMessage.WriteString(message);
queueMessage.Format = MQC.MQFMT_STRING;
queueMessage.Encoding = MQC.MQENC_NATIVE;

queuePutMessageOptions = new MQPutMessageOptions();

queue.Put(queueMessage, queuePutMessageOptions);

Não tenho certeza qual deve ser o valor da linha queueMessage.Encoding.

outra pergunta será a codificação para ASCII remover a Bit Object Mark (BOM)?

Respostas:

2 para resposta № 1

Se você olhar aqui: https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.ref.dev.doc/q111220_.htm

Métodos ReadString, ReadLine e WriteString convertem entre Unicode e o conjunto de caracteres da mensagem; veja CharacterSet

e

O método WriteString converte de Unicode parao conjunto de caracteres codificado em CharacterSet. Se CharacterSet estiver configurado para seu valor padrão, MQC.MQCCSI_Q_MGR, que é 0, nenhuma conversão ocorre e CharacterSet é definido como 1200. Se você definir CharacterSet para algum outro valor, WriteString converte de Unicode para o valor alternativo.

Então, antes de você chamar WriteString, vocêtem uma cadeia unicode no .NET. O método WriteString converte desse unicode no CCSID indicado pela propriedade CharacterSet, cujo padrão é unicode e fornece o prefixo engraçado de 2 bytes da BOM (byte order mark). Se você definir isso como, por exemplo, 850, então ele irá converter de unicode para uma saída ASCII de um único byte como você deseja.