Я отправляю сообщение в MSMQ с С# (ActiveXFormatter) и пытаюсь прочитать его на С++. Тело, которое я прочитал, действительно является телом сообщения, которое я отправил, но между каждыми двумя символами есть «0» (в C++). Я думаю, что это связано с кодировкой, но я не уверен, как это исправить. Я открываю MSMQ с VT_VECTOR | VT_UI1
.
Я безуспешно пытался открыть MSMQ с помощью VT_BSTR
.
В С# я отправляю сообщение с помощью простого ActiveXFormatter _sendQueue.Formatter = new ActiveXMessageFormatter(); _sendQueue.Send(myString);
1 ответ
Исправил это, изменив кодировку в C# и отправив массив байтов с нулевым завершением.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
ActiveXMessageFormatter
- что вы используете на стороне C++?0
между каждым символом является типичным для UTF-16 (Unicode по умолчанию для MS-Windows) при отправке только ASCII (как Unicode). Таким образом, отправка «ABCD» будет получена как «A\0B\0C\0D\0». Обрабатывайте символы, полученные на стороне C++, как широкие символы в кодировке UTF-16LE.