C# RestSharp 发送http请求响应乱码解决方案!

在此之前,我有先获取过他的response.ContentEncoding,但是值为空,看了别人的解决方案,都是五花八门,想想还是自己干吧!

RestSharp 可能是老外开发的,人家压根没考虑你中国人的编码习惯,通通都是utf-8

好在人家代码是开源的,我直接拿来断点,看是哪里出问题了!

 

直接进入正题,由于嵌套太深,没有仔细去了解每一步的过程,我直接切到HttpResponse.cs中的Content get方法

在这个类中,还有个属性,ContentType,我尝试输出了一下,在调用Content方法前,ContentType是有值的,既然有值,那就好办了,直接提取ContentType中的charset值就OK了,具体方法如下:

public string Content {
    //get { return this.content ?? (this.content = this.RawBytes.AsString()); }
    get {
        if (string.IsNullOrEmpty(this.ContentEncoding) && !string.IsNullOrEmpty(this.ContentType)) {
            Match match = Regex.Match(this.ContentType, "charset=(?<charset>[\\w|-]+)");
            if (match.Success) {
                this.ContentEncoding = match.Groups["charset"].Value;
                return this.content ?? (Encoding.GetEncoding(this.ContentEncoding).GetString(this.RawBytes));
            }
        }
        return this.content ?? (this.content = this.RawBytes.AsString());
    }
}

关于RestSharp的源码,你们可以自己到作者的github去下:https://github.com/restsharp/RestSharp

将RestSharp目录下的HttpResponse.cs中的Content方法改成文中的方法,然后在生成自己的dll

我生成的仍在审核,等会给大家放上来!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值