C# RestSharp 发送http请求响应乱码

RestSharp

进行 rest/http 请求的 .NET 工具库。

功能

支持.NET 3.5+,Silverlight 5,Windows Phone 8,Mono,MonoTouch,Mono for Android;容易安装,NuGet 适合大多数 .NET 风格;支持使用 NuGet 的大多数 .NET 风格的强命名;自动 XML 和 JSON 反序列化;支持通过 ISerializer 和 IDeserializer 自定义序列化和反序列化;模糊元素名称匹配 ('product_id' in XML/JSON will match C# property named 'ProductId') ;自动检测返回的内容类型;支持 GET,POST,PUT,PATCH,HEAD,OPTIONS,DELETE;还支持其他非标准 HTTP 方法;oAuth 1,oAuth 2,Basic,NTLM 和基于参数的身份验证器;通过 IAuthenticator 支持自定义认证方案;Multi-part form/file 上传;T4 Helper 从 XML 文档生成 C#类。.

问题

RestSharp 可能是老外开发的,人家压根没考虑你中国人的编码习惯,通通都是utf-8,好在人家代码是开源的,我直接拿来断点,看是哪里出问题了!直接进入正题,由于嵌套太深,没有仔细去了解每一步的过程,我直接切到HttpResponse.cs中的Content get方法,在这个类中,还有个属性,ContentType,我尝试输出了一下,在调用Content方法前,ContentType是有值的,既然有值,那就好办了,直接提取ContentType中的charset值就OK了,具体方法如下:

   var client = new RestClient(daoruurl);
            client.Timeout = -1;
            var request = new RestRequest(Method.POST);

            client.Encoding = Encoding.UTF8;
            //  client.AddDefaultHeader("Content-Type", "text/html;charset=gb2312");

            request.AddFile("team-mapped", System.Environment.CurrentDirectory + "\\data.txt");
            IRestResponse response = client.Execute(request);
            textBox1.Text = response.Content;
            Console.WriteLine(response.Content);