Первое, что нужно сделать, это выяснить, что на самом деле отправляется, с точки зрения заголовков, объявления XML и байтов, формирующих сам текст.
Fiddler хорош в качестве HTTP-прокси, или вы можете использовать WireShark для прослушивания на уровне сети.
Как только вы получите эти три бита информации (заголовок Content-Type, объявление XML и байты, составляющие знак фунта), если вы обновите свой ответ, мы увидим, что мы можем сделать. Звучит странно, так как обычно ASP.NET понимает все правильно.
Как выглядит ваш код на стороне клиента? Это тоже обычный клиентский код веб-службы .NET?
РЕДАКТИРОВАТЬ: Попробуйте найти двоичный (шестнадцатеричный дамп) дисплей в Fiddler, чтобы вы могли найти байтов .
Однако я сильно подозреваю, что проблема заключается просто в выводе результата на консоль. Вот немного кода, который нужно использовать для вывода кодовых точек Unicode:
static void DumpString (string value)
{
foreach (char c in value)
{
Console.Write ("{0:x4} ", (int)c);
}
Console.WriteLine();
}
Я подозреваю, что вы увидите 00A3 в выводе, который является Unicode для знака фунта. Это означает, что строка действительно достигла вашего клиента в порядке - но записать ее на консоль не удается.