Обработка строк UTF-8 в веб-сервисе C # - PullRequest
3 голосов
/ 12 октября 2010

Я создал простой клиент веб-службы с помощью инструмента C # wsdl.exe.Он отлично работает, за исключением одной вещи.Похоже, строки UTF-8, возвращаемые в ответ, преобразуются в ASCII.Используя SOAPUI, я вижу нормальные строки в кодировке UTF-8, возвращаемые веб-сервисом.Но когда я отлаживаю ответ, который я получил, содержимое UTF-8, похоже, уже преобразовано в ASCII и полностью искажено.Где я должен увидеть строку, содержащую японские символы, я вижу список «?».

  1. Есть ли способ преобразовать строку обратно в Unicode, чтобы в отладчике был показан исходный ответ?string?
  2. Есть ли способ предотвратить искажение строки в ответе службы?

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Убедитесь, что вы действительно кодируете строки в соответствии с документацией @Sam:

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        // Create a UTF-8 encoding.
        UTF8Encoding utf8 = new UTF8Encoding();

        // A Unicode string with two characters outside an 8-bit code range.
        String unicodeString =
            "This unicode string contains two characters " +
            "with codes outside an 8-bit code range, " +
            "Pi (\u03a0) and Sigma (\u03a3).";
        Console.WriteLine("Original string:");
        Console.WriteLine(unicodeString);

        // Encode the string.
        Byte[] encodedBytes = utf8.GetBytes(unicodeString);
        Console.WriteLine();
        Console.WriteLine("Encoded bytes:");
        foreach (Byte b in encodedBytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();

        // Decode bytes back to string.
        // Notice Pi and Sigma characters are still present.
        String decodedString = utf8.GetString(encodedBytes);
        Console.WriteLine();
        Console.WriteLine("Decoded bytes:");
        Console.WriteLine(decodedString);
    }
}
0 голосов
/ 07 августа 2011

Вместо отправки данных в виде строки, попробуйте отправить данные в виде байтового массива и преобразовать их в ту же кодировку на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...