由于百度、搜狗、搜搜本身預設不支援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