HttpWebRequest乱码问题

Atai-Lu 2008-04-24 10:38:03

public static string getWebContent(string Url, string referer, string ch)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Timeout = 30000;//设置连接超时时间
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; ccdotnet ; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
request.Referer = referer;//设置标头
request.AllowAutoRedirect = true;
//不用缓存
//request.Headers.Set("Pragma", "no-cache");//不用缓存的话,对方服务器返回500错误
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding(ch);
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch (Exception ex) { HttpContext.Current.Response.Write(ex.ToString()); }
return strResult;
}
//抓取的地址http://www.qidian.com/BookReader/180029.aspx
//编码设置为gb2312,目标网址编码也是gb2312,但是返回结果是乱码,有什么解决的办法没?

...全文
1192 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
feisunsunnys 2010-11-10
  • 打赏
  • 举报
回复
Encoding encoding = Encoding.GetEncoding("GBK");

byte[] data = encoding.GetBytes("xml=" + content);

HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);

myRequest.Method = "POST";

myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";

myRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

myRequest.ContentLength = data.Length;

Stream newStream = myRequest.GetRequestStream();

newStream.Write(data, 0, data.Length);

newStream.Close();

HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();

switch (response.CharacterSet.ToLower())
{
case "utf-8":
encoding = System.Text.Encoding.GetEncoding("utf-8");
break;
case "gb2312":
encoding = System.Text.Encoding.GetEncoding("gb2312");
break;
default:
encoding = System.Text.Encoding.GetEncoding("utf-8");
break;
}

StreamReader sr = new StreamReader(response.GetResponseStream(), encoding);

s = sr.ReadToEnd();

response.Close();
Joson.e8love 2009-03-03
  • 打赏
  • 举报
回复
mark
supnightmare 2008-05-07
  • 打赏
  • 举报
回复
这个乱码问题很是复杂,我也是,做一个网站,只有点击找回密码时,那张页面就出现乱码,其它页面都好好的.这个问题很是头痛,网站和空间的权限也是有关系的.
jrl5365 2008-04-25
  • 打赏
  • 举报
回复
/// <summary>
/// 得到页面HTML代码(PagePath地址为URL绝对地址)
/// </summary>
/// <param name="PagePath">页面地址(PagePath地址为URL绝对地址)</param>
/// <returns></returns>
public string GetUrlHtml(string PagePath)
{
string BackHtml;
Uri uri = new Uri(PagePath);
WebRequest req = WebRequest.Create(uri);
WebResponse resp = req.GetResponse();
Stream str = resp.GetResponseStream();
StreamReader sr = new StreamReader(str, System.Text.Encoding.UTF8);
return BackHtml = sr.ReadToEnd();
}
diffmaker 2008-04-24
  • 打赏
  • 举报
回复
我也试了一下,确实是乱码
Atai-Lu 2008-04-24
  • 打赏
  • 举报
回复
楼上的...
Web.Config本来就有设置这个

而且,抓取的数据跟这个设置没多大关系吧???
前几天抓取的数据还正常,今天试了一下,成乱码了...
nonoliving 2008-04-24
  • 打赏
  • 举报
回复
requestEncoding="utf-8/gb2312" responseEncoding="utf-8/gb2312" fileEncoding="utf-8/gb2312"
webconfig设置一下。
Atai-Lu 2008-04-24
  • 打赏
  • 举报
回复
你试试就知道了...
返回的结果还是乱码
gauzxj 2008-04-24
  • 打赏
  • 举报
回复
用默认default编码应该不会有很大的问题
Atai-Lu 2008-04-24
  • 打赏
  • 举报
回复
.net版人气真高啊...
以后来这里混算了~哎
Atai-Lu 2008-04-24
  • 打赏
  • 举报
回复
utf-8乱得更彻底...
lovehongyun 2008-04-24
  • 打赏
  • 举报
回复
utf-8试试.
Atai-Lu 2008-04-24
  • 打赏
  • 举报
回复
不行...
还是一样
wszhoho 2008-04-24
  • 打赏
  • 举报
回复
Encoding encoding = Encoding.GetEncoding(ch);----->Encoding encoding = Encoding.Default;
lovehongyun 2008-04-24
  • 打赏
  • 举报
回复
o_o
abchappybear 2008-04-24
  • 打赏
  • 举报
回复
以前也遇到过,学习学习...
wangfan113 2008-04-24
  • 打赏
  • 举报
回复
我也遇到过这种问题

关注下....
Atai-Lu 2008-04-24
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 wszhoho 的回复:]
已经测试成功了,代码打包地址:http://www.fs2you.com/zh-cn/files/2d9a39ba-11d6-11dd-b7f2-0014221b798a/
[/Quote]
HoHo,你的代码我也下下来了...
Atai-Lu 2008-04-24
  • 打赏
  • 举报
回复
感谢wszhoho(逐日★风) 与sillyfox(傻狐狸) 两位老兄,明天加分再结贴

问题已经解决

本来想立即结贴的,但是今天还不能加分^_^
wszhoho 2008-04-24
  • 打赏
  • 举报
回复
加载更多回复(23)
内容概要:本文档围绕水声网络(UAN)仿真中的信道建模展开,提供了基于Matlab的代码实现方案,旨在帮助科研人员构建和理解水声通信系统的仿真环境。文档不仅聚焦于信道建模的核心技术,还系统性地整合了智能优化算法、机器学习、图像处理、路径规划、无人机应用、信号处理、电力系统管理等多个前沿科研方向的技术方法与实际案例。涵盖的具体算法包括遗传算法、粒子群优化(PSO)、神经网络、卡尔曼滤波、支持向量机、极限学习机、卷积神经网络等,并深入探讨其在通信系统仿真中的应用。文档强调“借力”科研理念,倡导利用成熟的算法工具与仿真平台提升研究效率,并提供了丰富的配套资源,包括百度网盘链接和微信公众号入口,便于读者获取完整的代码、仿真模型及相关论文资料,全面支持科研复现与创新。; 适合人群:具备一定Matlab编程基础,从事通信工程、信号与信息处理、水声工程、自动化控制、电子信息、电力系统、无人机技术等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习并复现水声网络信道建模的Matlab仿真流程;② 探索智能优化算法、机器学习、路径规划等技术在通信与多学科交叉系统仿真中的集成应用;③ 获取可用于科研项目的高质量算法代码、仿真案例与复现资源,加速课题研究进程,提升科研创新能力与论文发表水平。; 阅读建议:建议读者按照文档推荐的主题顺序逐步学习,优先聚焦自身研究方向的相关内容,并结合网盘提供的完整资源进行代码实践、仿真调试与结果验证,以实现理论理解与动手能力的双重提升,充分发挥本资源在科研攻关中的支撑作用。
代码下载链接: https://pan.quark.cn/s/b27638adc362 在工业自动化监控领域中,WinCC 被视为一种常用的可视化软件,其功能在于构建人机界面(HMI)以及SCADA系统。本资料将阐释在WinCC环境下如何构建一个展现管道中流体流动的动态效果,此功能主要通过C动作脚本来完成。在此过程中,我们需要构建两个矩形,分别标记为 rec1 和 rec2。这两个矩形的高度相等,但 rec1 的宽度要小于 rec2。在具体实施时,rec1 将作为展示流体运动的可见单元,而 rec2 则作为辅助元素,尽管其“显示”属性被设为关闭,但在程序执行期间,其属性参数对流体动画的表现起着决定性作用,因为 rec2 与 rec1 的宽度差将决定流体每次移动的长度。 随后,我们需要将 rec1 和 rec2 整合为一个自定义对象。在自定义对象的属性配置中,应包含 rec1.Left、rec1.Width、rec1.Visible 和 rec2.Width 这些核心属性。这些属性将有助于在C脚本中精确控制对象的位置和可见状态,以达成流体运动的视觉效果。同时,用户可根据实际需求增加其他属性,以增强自定义对象的功能性。 在自定义对象的C脚本部分,我们设定了一个周期为“250ms”的触发器。该脚本的核心职责是计算并更新流体块的位置。借助 GetPropBOOL、GetPropWord 和 GetLeft 函数,我们可以获取对象的当前状态,涵盖其可见性、位置及宽度等参数。在循环操作中,流体块(rec1)将向右移动 rec2 - rec1 的距离,一旦流体块移出显示范围(即 rec1 的右边界达到或超过 rec2 的左边界),它将重新回到起始位置,从而形成流体持续流动的模...

62,270

社区成员

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

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

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

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