webclient抓取数据乱码的问题

NqIceCoffee 2008-02-29 11:11:39
WebClient web = new WebClient();
Stream stream = web.OpenRead(url);
StreamReader sr = new StreamReader(stream, Encoding.Default);
string webData = sr.ReadToEnd();


这里抓取的大多数网站都不会乱码

但抓取一些的时候就会出现乱码,如何通过简洁的手段,能达到抓取的数据都不会乱码?

请教大虾~~
...全文
356 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
NqIceCoffee 2008-03-12
  • 打赏
  • 举报
回复
为何顶不起来?
NqIceCoffee 2008-03-12
  • 打赏
  • 举报
回复
肯定会有没有加 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 这个标记的

不知道哪位大虾有解决的办法

顶了~~~
milo4210 2008-02-29
  • 打赏
  • 举报
回复
首先,请问那些站点没有这个信息??
再有,即使是乱码,但英文不会有乱码的,你可以单独把<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 这行提取出来,不一定选择证则
NqIceCoffee 2008-02-29
  • 打赏
  • 举报
回复
我说的意思是:

有些站点没有这个信息

即使有这个信息,如果我抓回来的是乱码

正则也匹配不出结果
milo4210 2008-02-29
  • 打赏
  • 举报
回复
判断 charset 的值,然后根据这个值来确定采用哪种编码格式
milo4210 2008-02-29
  • 打赏
  • 举报
回复
对阿,网页都应该有这个头部信息的
NqIceCoffee 2008-02-29
  • 打赏
  • 举报
回复
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
OR
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

就是这两个头信息
milo4210 2008-02-29
  • 打赏
  • 举报
回复
没有头信息???什么情况没有头信息??
NqIceCoffee 2008-02-29
  • 打赏
  • 举报
回复
回8楼

如果站点没有头信息呢?

我也试过,如果有乱码,正则匹配不到结果
milo4210 2008-02-29
  • 打赏
  • 举报
回复
英文会有乱码?你就先把头部的信息抓回来 就是<head></head>之间的,或者更简单的用个证则去匹配 charset=
NqIceCoffee 2008-02-29
  • 打赏
  • 举报
回复
5楼的兄弟

这个站点是用户手动输入的

没法了解它的编码规则
NqIceCoffee 2008-02-29
  • 打赏
  • 举报
回复
3楼的兄弟

如果我抓到的是乱码

如何分析?

这样做貌似有点像:先有蛋后有鸡。
milo4210 2008-02-29
  • 打赏
  • 举报
回复
那你就要事先了解一下这个网站的编码

如果不先麻烦,就先去截取网站的头部信息,charset 就是编码,根据这个判断使用哪种编码格式
NqIceCoffee 2008-02-29
  • 打赏
  • 举报
回复
恩,楼上两位说的没错

如果我使用两个
StreamReader sr1 = new StreamReader(stream, Encoding.Default);
StreamReader sr2 = new StreamReader(stream, Encoding.UTF8);

如何判断哪个是我需要的?

sr1是乱码还是sr2是乱码?
hongqi162 2008-02-29
  • 打赏
  • 举报
回复
分析一下网站的编码方式再抓取数据吧
hongqi162 2008-02-29
  • 打赏
  • 举报
回复
StreamReader(stream, Encoding.Default); //和网站的编码方式有关系吧
milo4210 2008-02-29
  • 打赏
  • 举报
回复
有的网站使用 GB2312 有的使用UTF8

StreamReader sr = new StreamReader(stream, Encoding.UTF8);

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧