最简单的二选一处理网页编码获取正确内容以及处理错误

对于获取网页内容不出现乱码的问题,网络上的方法很多,总结无非就是要获取一定的信息判断后才知道是什么编码,获取编码后再次按正确的编码获取内容,这里写个最简单的二选一分法:

        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[] { "&amp;", "&" }, new string[] { "&lt;", "<" }, new string[] { "&gt;", ">" }, new string[] { "&quot;", "\"" } };
            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等异常的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值