2016-06-09 3 views
0

Я использую RestSharp версии 105.1.0 (.NET 4.5.1), чтобы сделать вызов REST для нашего собственного API. Этот API отправляет ответы со следующим заголовком, представляющим особый интерес: Content-Type: application/json; Charset=iso-8859-1. Как вы можете видеть, кодировка этого ответа установлена ​​на iso-8859-1.RestSharp игнорирует кодировку кодировки ответа

Я ожидаю, что ответ, который я получаю от RestSharp, использует эту кодировку для декодирования содержимого ответа. Однако, когда я смотрю на свойство RestResponse.Content, некоторые символы отображаются как . Насколько я знаю, это означает неправильную кодировку. Когда я пытаюсь декодировать RawBytes вручную, используя правильную кодировку, я получаю правильную строку.

Я попытался вручную установить свойство iso-8859-1 Encoding на RestClient, но безрезультатно.

Как я могу убедиться, что ответы RestSharp декодируются с использованием правильной кодировки?

Пример кода:

// Setting the Encoding here does not change the result 
var client = new RestClient(myApiUri) { Encoding = Encoding.GetEncoding("iso-8859-1") }; 
var request = new RestRequest(Method.GET); 
var restResponse = client.Execute(request); 
Console.WriteLine(restResponse.Content) 
// Outputs content as string with wrong encoding 
// some characters display as � 

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

ответ

3

Я также имел эту проблему, решить должен был получить байтовый массив, который он вносит в объект IRestResponse и преобразовать его для кодирования я хочу

var request = new RestRequest(Method.GET); 
var restResponse = client.Execute(request); 

Encoding encoding = Encoding.GetEncoding("ISO-8859-1"); 
var result = encoding.GetString(response.RawBytes); 
Console.WriteLine(result); 
+0

Это точно, как я работал вокруг этого вопроса, а также. Я надеялся, что будет более чистый способ достичь этого, не используя «RawBytes» в ответе. –

Смежные вопросы