c#不支持编码gb2312问题

有一个网站是gb2312的,我通过接口直接请求然后原样输出,

ArgumentException: 'GB2312' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the

解决办法在调用之前调用 下面方法就不会出现这个错误了,而且成功解码Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

image.png

完整代码

public static string sendGetParseContent(string url, string encoding)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            using (var httpClientHandler = new HttpClientHandler()) {
                httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, sslPolicyErrors) => {
                    if (sslPolicyErrors == SslPolicyErrors.None) {
                        return true;   //Is valid
                    }

                    /*   if (cert.GetCertHashString() == "99E92D8447AEF30483B1D7527812C9B7B3A915A7")
                       {
                           return true;
                       }*/
                    return true;
                };

                using (var client = new HttpClient(httpClientHandler)) {
                    var response = client.GetAsync(url);
                    var responseContent = response.Result.Content.ReadAsByteArrayAsync().Result;
                    if (encoding.ToLower() == "utf-8") {

                        return System.Text.Encoding.UTF8.GetString(responseContent);
                    }
                    else
                    if (encoding.ToLower() == "Unicode".ToLower()) {

                        return System.Text.Encoding.Unicode.GetString(responseContent);
                    }
                    else
                    if (encoding.ToLower() == "ASCII".ToLower()) {

                        return System.Text.Encoding.ASCII.GetString(responseContent);
                    }
                    else {
                        if (string.IsNullOrEmpty(encoding)) {
                        return Encoding.Default.GetString(responseContent);

                        }
                        else {
                        return Encoding.GetEncoding(encoding).GetString(responseContent);

                        }

                    }
                }
            }

接口

[HttpGet("fetchIPAli")]
        public IActionResult fetchIPAli()
        {
            string content= MyHttpUtil.sendGetParseContent("http://www.net.cn/static/customercare/yourip.asp", "GB2312");
            return Content(content, "text/html; charset=gb2312");
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值