不知道為什麼現在各大搜索引擎編碼居然不一樣.當然不是GB2312就是UTF-8了.編碼問題是比較頭疼的問題...頭疼的不要命...
我們獲得關鍵詞,一般是通過來訪頁面的url進行分析的.比如
http://www.google.com/search?hl=zh-CN&q=%E5%AD%A4%E7%8B%AC&lr=
各位肯定知道這個是通過urlencode編碼的.
我們得到其中的信息,需要進行2步.第一步是進行urldecode,在我們普通參數活得的時候,這個是由ASP自己來進行的,但是現在我們不得不進行手工解碼.
網上函數很多,但都是針對於GB2312頁面解GB2312.UTF-8的.對於這個,我們可以很輕鬆的先進行解碼,然後根據搜索引擎判斷它的編碼,如果是UTF-8就再轉換為GB2312.
但是由於我的網站是UTF-8頁面的.而UTF-8頁面我找到的只有解UTF-8字符的urldecode編碼的.在這裡停頓了很久,最後我只能用最糟糕的方法,把拆分出來的關鍵詞用xmlhttp提交到一個GB2312的ASP頁面,然後活得亂碼(GB2312)後再進行GB2312toUTF-8的轉換.
下面主要實現代碼.
PublicFunctionGetSearchKeyword(RefererUrl)'搜索關鍵詞
ifRefererUrl=orlen(RefererUrl)<1thenexitfunction
onerrorresumenext
Dimre
Setre=NewRegExp
re.IgnoreCase=True
re.Global=True
Dima,b,j
'模糊查找關鍵詞,此方法速度較快,範圍也較大
re.Pattern=(word=([^&]*)|q=([^&]*)|p=([^&]*)|query=([^&]*)|name=([^&]*)|_searchkey=([^&]*)|baidu.*?w=([^&]*))
Seta=re.Execute(RefererUrl)
Ifa.Count>0then
Setb=a(a.Count-1).SubMatches
Forj=1tob.Count
IfLen(b(j))>0then
ifinstr(1,RefererUrl,google,1)then
GetSearchKeyword=Trim(U8Decode(b(j)))
elseifinstr(1,refererurl,yahoo,1)then
GetSearchKeyword=Trim(U8Decode(b(j)))
elseifinstr(1,refererurl,yisou,1)then
GetSearchKeyword=Trim(getkey(b(j)))
elseifinstr(1,refererurl,3721,1)then
GetSearchKeyword=Trim(getkey(b(j)))
else
GetSearchKeyword=Trim(getkey(b(j)))
endif
ExitFunction