2014-12-12 4 views
0

다른 포럼에있는 표준 설명을 기반으로 MQRC 클라이언트를 개발했습니다.C# MQSeries put 메서드 문제

mqMessage = new MQMessage(); 
//mqMessage.Format = MQC.MQFMT_STRING; 
mqMessage.WriteString(message); 
//mqMessage.Encoding = 546; 
//mqMessage.CharacterSet = 1208; 

mqPutMessageOptions = new MQPutMessageOptions(); 

//putting the message into the mqQueue 
mqQueue.Put(mqMessage, mqPutMessageOptions); 

위의 코드는 정상적으로 작동하고 apprepiate 대기열에 messge를 보낼 수 있습니다. 그러나 대기열에는 메시지에 원본 메시지의 모든 문자 사이에 16 진수 값 00이 들어 있습니다. 또한 인코딩 및 문자 집합을 변경하려고 시도했지만 문제의 영향이 없습니다.

답변

0

메시지 본문을 쓰려면 WriteString 메서드를 사용하고 있기 때문입니다. WriteString 메서드는 코드 페이지 1200을 사용합니다. 각 문자는 2 바이트로 표현되며, 첫 번째 바이트는 0x00이됩니다. 이 메서드는 UTF8을 사용하여 메시지 본문을 씁니다. 대신 WriteUTF 메서드를 선택할 수 있습니다.

참고 : WriteString 방법을 사용하는 경우 ReadString 메시지 본문을 읽는 방법을 사용해야합니다. 마찬가지로 WriteUTF을 사용하여 작성하는 경우 ReadUTF을 사용하여 메시지 본문을 읽습니다.