【问题标题】:RestSharp ignores response charset encodingRestSharp 忽略响应字符集编码
【发布时间】:2016-06-09 08:32:40
【问题描述】:

我正在使用 RestSharp 版本 105.1.0 (.NET 4.5.1) 对我们自己的 API 进行 REST 调用。此 API 发送带有以下特别感兴趣的标头的响应:Content-Type: application/json; Charset=iso-8859-1。如您所见,此响应的字符集设置为 iso-8859-1。

我希望我从 RestSharp 获得的响应使用此编码来解码响应内容。但是,当我查看 RestResponse.Content 属性时,某些字符显示为 �。据我所知,这意味着使用了错误的编码。当我尝试使用正确的编码手动解码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 �

提前致谢!

【问题讨论】:

    标签: c# .net encoding restsharp


    【解决方案1】:

    我也遇到了这个问题,要解决必须获取它带来的 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);
    

    【讨论】:

    • 这正是我解决此问题的方法。我希望有一种更简洁的方法来实现这一点,即不在响应中使用RawBytes
    猜你喜欢
    • 2020-02-20
    • 2016-08-22
    • 2018-09-20
    • 1970-01-01
    • 2011-12-17
    • 2012-05-10
    • 2023-04-04
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多