有一个网站是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");
}