Server.Execute () возвращает закодированный поток, но StringWriter () предназначен для хранения простых строк .NET (которые являются 16-битными Unicode и не имеют спецификации) и не знает, как декодировать входящий байт. Таким образом, спецификация в ответе становится буквенными символами в вашей строке.
Попробуйте вместо этого записать в MemoryStream (), а затем декодировать , чтобы вернуть обратно в строку, используя любую кодировку (UTF-8 или любую другую), которую Server.Execute () передает обратно. Затем вы можете разобрать его и записать обратно в свой ответ.