主要な検索エンジンのコーディングが現在違う理由はわかりません。もちろん、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を使用してSplitキーワードをGB2312のASPページに送信し、その後、GB2312 TOUTF-8を変換してから、GB2312(GB2312)に住んでいます。
次の主な実装コード。
publicFunctionGetSearchKeyWord(refererurl) 'キーワードを検索します
ifrefererurl = orlen(refererurl)<1thenexitfunction
onerrorresumenext
薄暗い
setre = newRegexp
re.ignorecase = true
re.global = true
ディマ、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)その後
getSearchKeyWord = TRIM(u8decode(b(j)))
elseifinstr(1、refererurl、yahoo、1)その後
getSearchKeyWord = TRIM(u8decode(b(j)))
elseifinstr(1、refererurl、yisou、1)その後
getSearchKeyWord = trim(getKey(b(j)))
elseifinstr(1、refererurl、3721,1)
getSearchKeyWord = trim(getKey(b(j)))
それ以外
getSearchKeyWord = trim(getKey(b(j)))
endif
exitFunction