Я отправляю сообщение в MSMQ с С# (ActiveXFormatter) и пытаюсь прочитать его на С++. Тело, которое я прочитал, действительно является телом сообщения, которое я отправил, но между каждыми двумя символами есть «0» (в C++). Я думаю, что это связано с кодировкой, но я не уверен, как это исправить. Я открываю MSMQ с VT_VECTOR | VT_UI1.

Я безуспешно пытался открыть MSMQ с помощью VT_BSTR.

В С# я отправляю сообщение с помощью простого ActiveXFormatter _sendQueue.Formatter = new ActiveXMessageFormatter(); _sendQueue.Send(myString);

0
John John 31 Окт 2019 в 19:58
ActiveXMessageFormatter - что вы используете на стороне C++?
 – 
500 - Internal Server Error
31 Окт 2019 в 20:02
1
0 между каждым символом является типичным для UTF-16 (Unicode по умолчанию для MS-Windows) при отправке только ASCII (как Unicode). Таким образом, отправка «ABCD» будет получена как «A\0B\0C\0D\0». Обрабатывайте символы, полученные на стороне C++, как широкие символы в кодировке UTF-16LE.
 – 
Richard Critten
31 Окт 2019 в 20:05
Как бы я сделал это на C ++?
 – 
John John
3 Ноя 2019 в 08:58

1 ответ

Исправил это, изменив кодировку в C# и отправив массив байтов с нулевым завершением.

0
John John 3 Ноя 2019 в 10:33