установить кодировку ответа из XML - PullRequest
0 голосов
/ 12 августа 2011

Я работаю с XML. Я получил XML, как это:

<ajax-response>
<response>
<item>
<number></number>
<xxx>N?o ok</xxx>
<error>null</error>
</item>
</response>
</ajax-response>

в xxx значение равно "não ok", но как я могу преобразовать из "N? O ok" в "Não ok"?

Я знаю, что кодификация - utf8 (1252), но как установить это в выводе xml?

Я попытался установить в запросе:

client.Encoding = Encoding.UTF8;

но не работает. Заранее спасибо!

1 Ответ

1 голос
/ 13 августа 2011

Попробуйте установить кодировку в кодировку из кодовой страницы 1252. В приведенном ниже примере используется простой сервис для обслуживания файла, а установка кодировки в UTF-8 показывает ту же проблему, что и вы;установка правильной кодировки работает.

public class StackOverflow_7044842
{
    const string xml = @"<ajax-response>
<response>
<item>
<number></number>
<xxx>Não ok</xxx>
<error>null</error>
</item>
</response>
</ajax-response>";

    [ServiceContract]
    public class SimpleService
    {
        [WebGet]
        public Stream GetXml()
        {
            WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
            Encoding encoding = Encoding.GetEncoding(1252);
            return new MemoryStream(encoding.GetBytes(xml));
        }
    }
    public static void Test()
    {
        string baseAddress = "http://" + Environment.MachineName + ":8000/Service";
        WebServiceHost host = new WebServiceHost(typeof(SimpleService), new Uri(baseAddress));
        host.Open();
        Console.WriteLine("Host opened");

        WebClient client = new WebClient();
        client.Encoding = Encoding.GetEncoding(1252);
        string response = client.DownloadString(baseAddress + "/GetXml");
        Console.WriteLine(response);

        Console.Write("Press ENTER to close the host");
        Console.ReadLine();
        host.Close();
    }
}
...