C# Can';t获取编码-错误:“0”&引用;不是受支持的编码名称
我想从网站获取html使用httpwebrequest。但与一些网站有错误“是不支持的编码名称”。这是我的代码c#,谢谢C# Can';t获取编码-错误:“0”&引用;不是受支持的编码名称,c#,httpwebrequest,C#,Httpwebrequest,我想从网站获取html使用httpwebrequest。但与一些网站有错误“是不支持的编码名称”。这是我的代码c#,谢谢 string url = textBox1.Text; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == Ht
string url = textBox1.Text;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
if (response.CharacterSet == null)
{
readStream = new StreamReader(receiveStream);
}
else
{
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
}
string data = readStream.ReadToEnd();
webBrowser1.Size = new System.Drawing.Size(0, 0);
htmlview.Size = new System.Drawing.Size(800, 410);
htmlview.Location = new Point(0, 3);
htmlview.Margin = new Padding(3);
htmlview.Text = data;
response.Close();
readStream.Close();
}
很可能是由于编码名称无效/不受支持而发生错误。有关更多信息,请参阅 避免此类异常的一个可能解决方案是在创建StreamReader之前检查
response.CharacterSet
是否是有效的编码名称
以下是您的代码的修改版本:
...
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
var encodingInfoNotFound = string.IsNullOrEmpty(response.CharacterSet) || !Encoding.GetEncodings().Any(e => e.Name == response.CharacterSet);
var readStream = encodingInfoNotFound ? new StreamReader(receiveStream) : new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string data = readStream.ReadToEnd();
...
}
希望有帮助。从您的错误消息中,我推断
response.CharacterSet
为空。您能帮我修复它吗?您能使用UTF-8之类的默认编码吗?或者您根本不知道客户端传递给您的是什么吗?请尝试if(string.IsNullOrEmpty(response.CharacterSet))
tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:tks you:t?