HttpUtility.UrlEncodeUnicode(谷歌) 的结果是 %u8c37%u6b4c
=%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=谷歌,搜索的是乱码。英文的就是想搜的东西。就是处理中文关键字。
谁能给出个解决方案?网页在什么时候对这些中文参数进行的编码?
请给出具体的方案。谢谢!!
浏览器会对Url编码.
在传值前进行编码 再进行传递 使用时 解码
这个没有一个通用的解决方案,因为目前网站的服务端对汉字处理采用的编码存在不同的情况,像以前的很多asp网站,直接传汉字就行,不过标准一些的网站默认是UTF-8这种情况下对汉字编码处理即可
但又好多网站是选择UTF-8, GB这些编码,因此需要区别处理
HTML = Encoding.Default.GetString(streambyte);
换成以下代码试试
HTML = Encoding.GetEncoding(Response.CharacterSet).GetString(streambyte)