Как предполагает @Matten, одной из проблем может быть кодировка символов.
Значением по умолчанию для свойства CharacterSet является 1200 (UNICODE), а WriteString преобразуется в кодовую страницу, указанную CharacterSet.
Кодовая страница 1200 является UTF-16 с прямым порядком байтов, поэтому вы, вероятно, получите два байта на символ. Конечно, возможно, что «Put Test Message» использует другую кодировку, которая использует один байт на символ для общих символов.
Предполагая, что длины 3600 и 1799 подсчитываются в байтах, они могут представлять 1800 символов UTF-16LE и 1799 символов UTF-8 (или 1799 символов ASCII или 1799 символов EBCDIC ...).
Это все еще оставляет нам разницу в длине на один символ. Возможно, WriteString содержит завершающий символ NULL в записанной строке?
Вы уверены, что доверяете счету, который дает вам Notepad ++? Если «Поместить тестовое сообщение» поместило в сообщение 1799 символов, то, возможно, в предоставленных вами данных было 1799 символов.
Редактировать: Предполагая, что теория кодирования верна, вы можете сократить сообщение, используя другую кодировку. То, насколько коротким будет кодирование конкретного сообщения, будет зависеть от фактического содержимого строки.
Например, вы можете использовать кодировку ASCII, чтобы получить один байт на символ.
MQMessage queueMessage = new MQMessage();
queueMessage.CharacterSet = 437; // Set code page to ASCII
Это сократило бы ваше сообщение до 1800 байт , если все символы в вашей строке xml имели представление ASCII.
Альтернативой может быть использование кодировки UTF-8.
MQMessage queueMessage = new MQMessage();
queueMessage.CharacterSet = 1208; // Set code page to UTF-8
Преимущество использования UTF-8 состоит в том, что (в отличие от ASCII) все символы имеют представление (для определенных значений «all»). Недостатком является то, что некоторым символам для их представления требуется два, три или даже четыре байта. Наиболее распространенные символы кодируются одним байтом, затем следующие наиболее распространенные символы кодируются двумя байтами и так далее.
В лучшем случае кодировка UTF-8 также даст вам 1800 байт. В худшем случае это даст вам 7200 байт, но это маловероятно, если вы не используете что-то вроде клингона!