WebClient类对象DownloadString属性出现乱码问题[解决方法]

使用WebClient类对象的DownloadString属性请求下载内容时,出现乱码,如:{\"content\":\"鍏呭€兼垚鍔?,\"code\":0} ,后面的斜线引号变成问号了。
原因:由于返回接受字符串的编码有问题。编码分utf-8、gb2312。
解决方法:

WebClient web = new WebClient();//创建一个webclient对象
web.Encoding = System.Text.Encoding.UTF8;//定义对象的编码语言,此处或者是gb2312
string returns = web.DownloadString("http://blog.unvs.cn");//向一个链接请求资源

还有一种获取网页资源、源代码的方法(已加注释),如下:
WebRequest hwr  =  WebRequest.Create( @" http://www.baidu.com " );//向指定Url发出请求 
HttpWebResponse hwp  =  hwr.GetResponse()  as  HttpWebResponse;//将hwr对HTTP的请求 
string  text; 
StreamReader sr; 
string  code  =  hwp.ContentType;//请求响应得到的内容类型 
// 得到编码了  
code  =  code.Split( ' = ' )[ 1 ]; Stream rep  =  hwp.GetResponseStream();//将请求得到的内容以流的形式读出 
sr  =   new  StreamReader(rep, Encoding.GetEncoding(code));//用指定的字符编码为指定的流初始化 
text  =  sr.ReadToEnd();//读取数据

 

本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:http://blog.unvs.cn/archives/WebClient-DownloadString-attribute.html

转载于:https://www.cnblogs.com/Lethe/archive/2013/05/08/3066465.html

在C#中使用`WebClient`或`HttpClient`的`DownloadString`方法读取网页数据时遇到中文乱码问题,通常是由于字符编码不匹配造成的。为了解决这个问题,你可以按照以下步骤操作: 1. **确定源编码**: 首先,尝试查看网页的Content-Type头信息,它通常包含了字符集信息。如果网站没有明确说明,常见的中文页面可能采用的是UTF-8、GBK或GB2312等。 2. **设置响应编码**: 在`DownloadString`之前,你需要指定正确的响应编码。如果你知道是UTF-8,可以这样设置: ```csharp Encoding encoding = System.Text.Encoding.UTF8; string html = client.DownloadString(url, encoding); ``` 3. **自定义编码处理**: 如果不确定编码,可以使用`EncodingDetectEncodingFromStream`函数检测编码,但这个方法不是特别稳定。另一种做法是使用第三方库如`HttpWebUtility.HtmlDecode`并提供一个范围内的默认编码列表: ```csharp string html = Encoding.UTF8.GetString(client.DownloadData(url)); html = HttpUtility.HtmlDecode(html); ``` 4. **异常处理**: 如果下载过程中出现问题,比如找不到正确的编码,可能会引发`FormatException`。记得捕获这类异常并适当地处理。 5. **HTML文档内字符转义**: 如果返回的HTML内容中有一些特殊字符(如&符号)被错误地转义了,也可以影响到显示。这时需要对`html`字符串做适当的解码处理。 ```csharp string decodedHtml = HttpUtility.Unescape(html);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值