对于获取网页内容不出现乱码的问题,网络上的方法很多,总结无非就是要获取一定的信息判断后才知道是什么编码,获取编码后再次按正确的编码获取内容,这里写个最简单的二选一分法:
string 获取网址文件(string 网址)
{
string 内容 = new System.Net.WebClient { }.DownloadString(网址).Replace("\n","\r\n");
return 内容.Contains("GB2312"/*System.Text.Encoding.Default.EncodingName*/) ? 内容 : Encoding.UTF8.GetString(new System.Net.WebClient { }.DownloadData(网址)).Replace("\n", "\r\n");
}
由于使用TextBox显示内容因此做了替换处理.
当遇到小写的编码会出错,修改如下:
string 获取网页内容(string 网址)
{
string[][] 替换集合 = new string[][] { new string[] { "\n", "\r\n" }, new string[] { "&", "&" }, new string[] { "<", "<" }, new string[] { ">", ">" }, new string[] { """, "\"" } };
string 网页内容 = "";
try
{
网页内容 = 文字替换处理(new System.Net.WebClient { }.DownloadString(网址.Trim()), 替换集合);
}
catch (InvalidOperationException 异常)
{ MessageBox.Show("选定内容:" + 网址 + "?!\r\r\n" + 异常.ToString()); }
catch (ArgumentException 异常)
{ MessageBox.Show("选定内容:" + 网址 + "?!\r\r\n" + 异常.ToString()); }
finally { }
return (网页内容.Contains("GB2312") || 网页内容.Contains("gb2312") || 网页内容.Contains(System.Text.Encoding.Default.EncodingName)) ? 网页内容 : 文字替换处理(Encoding.UTF8.GetString(new System.Net.WebClient { }.DownloadData(网址.Trim())), 替换集合);
}
同时加了对服务器返回404等异常的处理。