ฉันไม่รู้ว่าทำไมการเข้ารหัสของเครื่องมือค้นหาที่สำคัญจึงแตกต่างกันในขณะนี้ แน่นอนว่าเป็น 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.UTF-8 สำหรับหน้า GB2312 สำหรับสิ่งนี้เราสามารถถอดรหัสได้อย่างง่ายดายก่อนจากนั้นตัดสินการเข้ารหัสตามเครื่องมือค้นหา หากเป็น UTF-8 มันจะถูกแปลงเป็น GB2312
แต่เนื่องจากเว็บไซต์ของฉันเป็นหน้า UTF-8 และหน้า UTF-8 ฉันพบการเข้ารหัส urldeCode ที่แก้อักขระ UTF-8 เท่านั้น ฉันหยุดที่นี่เป็นเวลานานและในที่สุดฉันก็สามารถใช้วิธีที่แย่ที่สุดในการส่งคำหลักแยกไปยังหน้า ASP ของ GB2312 โดยใช้ XMLHTTP จากนั้นอาศัยอยู่ในรหัสที่อ่านไม่ออก (GB2312) จากนั้นแปลง GB2312 TOUTF-8
รหัสการใช้งานหลักต่อไปนี้
PublicFunctionGetSearchKeyword (refererUrl) คำหลักค้นหา
ifrefererUrl = orlen (refererurl) <1thenexitfunction
onerrorresumenext
หรี่ลง
setre = newregexp
re.ignorecase = true
re.global = true
Dima, B, J
คำหลักค้นหาแบบฟัซซี่วิธีนี้เร็วขึ้นและมีช่วงที่ใหญ่กว่า
re.pattern = (word = ([^&]*) | q = ([^&]*) | p = ([^&]*) | query = ([^&]*) | name = ([^&]*) | _searchkey = ([^&]*) | baidu.*?
seta = re.execute (reforerurl)
ifa.count> 0 แล้ว
setb = a (a.count-1) .submatches
forj = 1tob.count
iflen (b (j))> 0 แล้ว
ifinstr (1, reforerurl, Google, 1) แล้ว
getSearchkeyword = trim (u8decode (b (j))))
elseifinstr (1, refoterurl, yahoo, 1) จากนั้น
getSearchkeyword = trim (u8decode (b (j))))
elseifinstr (1, refoterurl, yisou, 1) จากนั้น
getSearchkeyword = trim (getKey (b (j)))
Elseifinstr (1, reforerurl, 3721,1) แล้ว
getSearchkeyword = trim (getKey (b (j)))
อื่น
getSearchkeyword = trim (getKey (b (j)))
endif
exitfunction