2016-06-09 2 views
0

RestSharp 버전 105.1.0 (.NET 4.5.1)을 사용하여 자체 API에 대한 REST 호출을하고 있습니다. 이 API는 특히 관심있는 다음 머리글 (Content-Type: application/json; Charset=iso-8859-1)의 응답을 보냅니다. 보시다시피이 응답의 charset은 iso-8859-1로 설정됩니다.RestSharp가 응답 문자셋 인코딩을 무시합니다

RestSharp에서받은 응답은이 인코딩을 사용하여 응답 내용을 디코딩 할 것으로 예상됩니다. 그러나 RestResponse.Content 속성을 보면 일부 문자가 display로 표시됩니다. 내가 아는 한 이것은 잘못된 인코딩이 사용되었음을 의미합니다. 적절한 인코딩을 사용하여 RawBytes을 수동으로 디코딩하면 올바른 문자열이 표시됩니다.

RestClient에 iso-8859-1 Encoding 속성을 수동으로 설정해 보았지만 아무런 문제가 없습니다.

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

, 나는 이것은 나뿐만 아니라이 문제를 해결했다 정확히 어떻게

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

을 원하는가 IRestResponse 객체에서 제공하는 바이트 배열을 얻을 인코딩 변환했다. 나는 응답을 위해 RawBytes를 사용하여 이것을 달성하는보다 깨끗한 방법이 있기를 바랐다. –

관련 문제