急! .net采集utf-8的网页乱码 gb2312的不会

zhongweng 2010-12-18 01:13:40
现在看来百度不是万事通了 找了好久都没找到解决方案 .net采集utf-8的网页乱码 gb2312的不会 求解决方案
...全文
441 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
um07590769 2011-05-16
  • 打赏
  • 举报
回复
我也遇到同样的问题,有解决问题的代码吗?
zhongweng 2010-12-22
  • 打赏
  • 举报
回复
哎 搞了半天 看被采集的页面时utf-8编码 结果服务器返回个big5编码个我 郁闷 问题解决了 中午结贴啊 呵呵
火星大能猫 2010-12-22
  • 打赏
  • 举报
回复
指定编码
Encoding.GetEncoding
hyz_2011 2010-12-21
  • 打赏
  • 举报
回复
指定Encoding,用UTF-8编码
XPingguo 2010-12-21
  • 打赏
  • 举报
回复
指定Encoding,用UTF-8编码
Dobzhansky 2010-12-21
  • 打赏
  • 举报
回复
大多数情况下,
web 服务器推送给你一坨字节流,
同时告诉你流中存储的是什么,
如果是字符串,
字符串使用的是什么编码.

恢复为 .net string 的信息是足够.

也有垃圾服务推送信息不完整的, 或者推送的信息根本就是错误的.
nosaxw 2010-12-21
  • 打赏
  • 举报
回复
先用Encoding下的GetBytes()转成字节数组然后再用Encoding中的Convert转成别的编码,然后再用GetString()转回来。

还有要鄙视下LZ,做developer的应该多用google。baidu查查广告还行,查资料还是google强。
telankes2000 2010-12-21
  • 打赏
  • 举报
回复
伸手党
zhongweng 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wuyq11 的回复:]
// 获取网页的HTML内容,指定Encoding
static string GetHtml(string url, Encoding encoding)
{
byte[] buf = new WebClient().DownloadData(url);
if (encoding != null) return encoding.GetString(buf);
st……
[/Quote]

我是知道网页编码的 不用判断 你的方法还是乱码
gq198718 2010-12-18
  • 打赏
  • 举报
回复
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Url);
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
result = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.GetEncoding("UTF-8")).ReadToEnd();
httpWebRequest.GetResponse().Close();
Fry_cici 2010-12-18
  • 打赏
  • 举报
回复
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Url);
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
result = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.GetEncoding("UTF-8")).ReadToEnd();
httpWebRequest.GetResponse().Close();
wuyq11 2010-12-18
  • 打赏
  • 举报
回复
// 获取网页的HTML内容,指定Encoding
static string GetHtml(string url, Encoding encoding)
{
byte[] buf = new WebClient().DownloadData(url);
if (encoding != null) return encoding.GetString(buf);
string html = Encoding.UTF8.GetString(buf);
encoding = GetEncoding(html);
if (encoding == null || encoding == Encoding.UTF8) return html;
return encoding.GetString(buf);
}

// 根据网页的HTML内容提取网页的Encoding
static Encoding GetEncoding(string html)
{
string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)";
string charset = Regex.Match(html, pattern).Groups["charset"].Value;
try { return Encoding.GetEncoding(charset); }
catch (ArgumentException) { return null; }
}
sky_too_sky 2010-12-18
  • 打赏
  • 举报
回复
System.IO.StreamReader getReader = new System.IO.StreamReader(this.wb_tongbu.DocumentStream, System.Text.Encoding.GetEncoding(this.wb_tongbu.Document.Encoding));
string gethtml = getReader.ReadToEnd();

zhongweng 2010-12-18
  • 打赏
  • 举报
回复
哎 要是转变编码就行了 就不得找你们洛 来点实际的吗
winner2050 2010-12-18
  • 打赏
  • 举报
回复
设置一下采集用的编码就可以了。

这些采集的代码不是你作的吧。
whb147 2010-12-18
  • 打赏
  • 举报
回复
你不会转变编码吗?

还有一个就是用默认的编码
哈几油 2010-12-18
  • 打赏
  • 举报
回复
阅读完上面,答案肯定出来了。
sky_too_sky 2010-12-18
  • 打赏
  • 举报
回复
编码转换下不就完了么?
sky_too_sky 2010-12-18
  • 打赏
  • 举报
回复
百度不行找谷歌!
vrhero 2010-12-18
  • 打赏
  • 举报
回复
跟.NET半毛钱关系都没有...你自己指定了错误的Encoding,你的代码有bug...
加载更多回复(3)

62,025

社区成员

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

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

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

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