首页 新闻 会员 周边

url参数的问题。

0
悬赏园豆:50 [已解决问题] 解决于 2011-08-09 17:33

HttpUtility.UrlEncodeUnicode(谷歌) 的结果是 %u8c37%u6b4c

http://ks.pconline.com.cn/bbs.jsp?forumName=%D2%BA%BE%A7%B5%E7%CA%D3%BA%CD%B5%C8%C0%EB%D7%D3&forumValue=0000000071&forumOrgID=0000000071&forumOrgName

=%D2%BA%BE%A7%B5%E7%CA%D3%BA%CD%B5%C8%C0%EB%D7%D3&qx=&q=%u8c37%u6b4c&scope=title

在这个网站里的搜索框里输入谷歌。q=%u8c37%u6b4c

string searchkey =searchnum.Replace("{0",System.Web.HttpUtility.UrlEncodeUnicode(谷歌));

 Request.CookieContainer = new CookieContainer();        

    Response = (HttpWebResponse)Request.GetResponse();     

   Stream stream = Response.GetResponseStream();          

      byte[] streambyte = StreamToBytes(stream);           

     if (Response.StatusCode == HttpStatusCode.OK && Response.ContentLength < 1024 * 1024)          

      {                 

         HTML = Encoding.Default.GetString(streambyte);

    }

如果先在url里编码,然后用程序抓取,网页里搜索的是u8c37%u6b4c,也就是把“谷歌”编码后的值搜索了。

如果把q=谷歌,搜索的是乱码。英文的就是想搜的东西。就是处理中文关键字。

谁能给出个解决方案?网页在什么时候对这些中文参数进行的编码?

请给出具体的方案。谢谢!!

Rookier的主页 Rookier | 小虾三级 | 园豆:652
提问于:2011-08-03 10:49
< >
分享
最佳答案
0

浏览器会对Url编码.

收获园豆:30
Launcher | 高人七级 |园豆:45045 | 2011-08-03 15:16
其他回答(3)
0

在传值前进行编码  再进行传递 使用时 解码

杯具程序员 | 园豆:1718 (小虾三级) | 2011-08-03 11:32
那这种情况下在什么时候进行解码呢?
支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2011-08-03 13:37
我觉得也是这个原因,就是不知道在哪解码?
支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2011-08-03 13:37
传到那个页面 在load里解码
支持(0) 反对(0) 杯具程序员 | 园豆:1718 (小虾三级) | 2011-08-03 14:48
0

这个没有一个通用的解决方案,因为目前网站的服务端对汉字处理采用的编码存在不同的情况,像以前的很多asp网站,直接传汉字就行,不过标准一些的网站默认是UTF-8这种情况下对汉字编码处理即可

但又好多网站是选择UTF-8, GB这些编码,因此需要区别处理

收获园豆:20
2012 | 园豆:21230 (高人七级) | 2011-08-03 11:35
0

 HTML = Encoding.Default.GetString(streambyte);

换成以下代码试试

HTML = Encoding.GetEncoding(Response.CharacterSet).GetString(streambyte)

小胆粗心 | 园豆:300 (菜鸟二级) | 2011-08-03 11:42
我说的不是这个问题,是url参数编码解码的问题
支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2011-08-03 13:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册