由于百度、搜狗、搜搜本身默认不支持UTF-8搜索,所以在UTF-8编码的网页中嵌入百度、搜狗、搜搜搜索代码进行搜索时,提交的关键字会变成乱码,解决方法一般有两个:


1、把网页编码由UTF-8改成gbk或者gb2312的,即修改为:<meta http-equiv="Content-Type" content="text/html; charset=gb2312 " />,这样就可以解决乱码的问题。这是为刚开始进行开发,或者修改网页编码很容易的情况下可以采用这种方法。



2、当网站已经开发完成而且几乎所有的网页都是UTF-8编码的,修改代码非常麻烦,那就需要采用第二种方法了,在form表单中添加一个参数:<input type=hidden name=ie value="UTF-8">,再提交的时候就一切正常了。


3、在Url上面处理编码。统一编码为:utf-8。
在Url后加上:&ie=utf-8
例如:
百度:http://www.baidu.com/s?wd=##QUERY##&ie=utf-8

搜狗:http://www.sogou.com/web?query=##QUERY##&ie=utf-8

搜搜:http://www.soso.com/q?pid=s.idx&ch=s.idx&w=##QUERY##&ie=utf-8
 
 
附:
大部分中文搜索引擎接收的编码是GB2312的,包括Google默认的编码。但是使用UTF-8制作网页是一种趋势,方便不同地区的人们浏览。在网页中设置类似于“在Google中搜索关于XXX的资料”这样的链接,可以为访客提供方便,但是涉及到UTF-8编码时,事情就变得有些麻烦了。
1、直接能使用UTF-8编码的搜索引擎。
只有Google和雅虎。
示例:Google:http://www.google.cn/search?hl=zh-CN&q=%e6%bd%ae%e5%b7%9e%e5%b8%82%e7%88%b1%e5%bf%83%e7%a6%8f%e5%88%a9%e4%bc%9a
Yahoo:http://one.cn.yahoo.com/s?pid=hp&v=web&p=%e6%bd%ae%e5%b7%9e%e5%b8%82%e7%88%b1%e5%bf%83%e7%a6%8f%e5%88%a9%e4%bc%9a
2、使用参数就能解决的搜索引擎。
包括百度、腾讯SOSO,只需要在链接后添加参数ie=UTF-8,效果就跟使用GB2312一样。
示例:百度:http://www.baidu.com/s?cl=3&ie=utf-8&wd=%e6%bd%ae%e5%b7%9e%e5%b8%82%e7%88%b1%e5%bf%83%e7%a6%8f%e5%88%a9%e4%bc%9a
腾讯SOSO:http://www.soso.com/q?pid=s.idx&ie=utf-8&w=%e6%bd%ae%e5%b7%9e%e5%b8%82%e7%88%b1%e5%bf%83%e7%a6%8f%e5%88%a9%e4%bc%9a
3、不能使用UTF-8编码的搜索引擎
搜狗的web搜索目前还不支持,mp3和新闻搜索倒是可以使用encoding=UTF-8这样的参数来解决!不支持只能通过其它方法来转换啦,C#中可以通过下面这个方法来转换:
System.Web.HttpUtility.UrlEncode(String,Encoding),只要指定Encoding为GB2312就可以了。例如:HttpUtility.UrlEncode("龙卷风",System.Text.Encoding.GetEncoding("GB2312"))
示例:http://www.sogou.com/web?query=%b3%b1%d6%dd%ca%d0%b0%ae%d0%c4%b8%a3%c0%fb%bb%e1
用JS转换只适合在IE中使用,通用性受到限制,不在考虑范围之内。如有兴趣,可参考本站文章:js版的UrlEncode
本文来源于 龙卷风资讯网 http://www.ljf.cn/ ;原文地址:http://www.ljf.cn/2009/2/Item171068.html