ฉันศึกษาการเขียนโค้ดหน้าเว็บมาเป็นเวลานานแล้ว เพราะเมื่อเร็วๆ นี้ฉันต้องออกแบบสคริปต์ VBS เพื่อการตรวจจับลิงก์ที่เป็นมิตร และหน้าของคนที่คุณลิงก์ไปมีแนวโน้มที่จะอยู่ในการเข้ารหัสที่หลากหลาย'/*===== ======== ========================================== ======== ==========
'*บทนำ ฉันศึกษาการเขียนโค้ดหน้าเว็บมาเป็นเวลานานแล้ว เพราะเมื่อเร็วๆ นี้ฉันต้องออกแบบสคริปต์ VBS เพื่อการตรวจจับลิงก์ที่เป็นมิตร และหน้าของบุคคลที่คุณกำลังลิงก์ไปนั้นมีแนวโน้มที่จะอยู่ในการเข้ารหัสที่หลากหลาย วิธีก่อนหน้านี้คือ: ถ้า ไม่พบโดยใช้ GB2312 จากนั้นใช้ UTF -8 Check และไม่พบข้อพิสูจน์ว่าอีกฝ่ายไม่ได้เชื่อมโยงกับคุณ แม้ว่าจะไม่ถูกต้อง 100% แต่ก็เกือบจะเหมือนกัน สองรหัส ฉันเห็นแนวคิดที่อยู่ในรายการโปรดของฉันโดยไม่ได้ตั้งใจ ในที่สุดก็เป็นไปได้ที่จะกำหนดการเข้ารหัสของหน้าเว็บโดยอัตโนมัติเมื่อรวบรวมบทความ เนื่องจากปัญหานี้กวนใจฉันมานานแล้วในระหว่างกระบวนการวิจัยถึงแม้ตอนนี้จะดูเหมือนง่าย แต่หลายคนยังคงมองหามันอยู่ฉันจึงโพสต์ทั้งสามฟังก์ชันนี้
' * ชื่อไฟล์ GetWebCodePage.vbs
' *ผู้เขียน yongfa365
' * เวอร์ชัน v2.0
' * เว็บ http://www.yongfa365.com
' * อีเมล์ yongfa365[at]qq.com
' * FirstWrite http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' * เมดไทม์ 29-01-2551 20:55:46 น
' * LastModify 30-01-2008 20:55:46
' *================================================' ==========================*/
โทรไปที่ getHTTPPage(http://www.baidu.com/)
โทรไปที่ getHTTPPage(http://www.google.com/)
โทรไปที่ getHTTPPage(http://www.yongfa365.com/)
โทรไปที่ getHTTPPage(http://www.cbdcn.com/)
โทรไปที่ getHTTPPage(http://www.csdn.net/)
'รับเนื้อหาที่ตรงกันและส่งกลับอาร์เรย์
'getContents(นิพจน์, สตริง, ไม่ว่าจะส่งคืนค่าอ้างอิงหรือไม่)
'msgbox getContents(a(.+?)b, a23234b ab a67896896b sadfasdfb ,จริง)(0)
ฟังก์ชั่น getContents(รูปแบบ, strng, หยินหยง)
'โดย www.yongfa365.com โปรดเก็บลิงก์ไว้เมื่อพิมพ์ซ้ำเพื่อให้ผู้ใช้ได้รับข้อมูลที่อัปเดตล่าสุดได้ทันเวลา
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ตั้งใหม่ = RegExp ใหม่
re.Pattern = รูปแบบ
re.IgnoreCase = จริง
re.Global = จริง
ตั้งค่าการจับคู่ = re.Execute (strng)
ถ้าหญิงยงแล้ว
สำหรับ i = 0 ถึง Matches.Count -1
ถ้า Matches(i).Value<> ดังนั้น RetStr = RetStr & Matches(i).SubMatches(0) & Liu Yongfa
ต่อไป
อื่น
สำหรับแต่ละ oMatch ในแมตช์
ถ้า oMatch.Value<> ดังนั้น RetStr = RetStr & oMatch.Value & Liu Yongfa
ต่อไป
สิ้นสุดถ้า
getContents = แยก(RetStr, Liu Yongfa)
สิ้นสุดฟังก์ชัน
ฟังก์ชั่น getHTTPPage(url)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ตั้งค่า xmlhttp = CreateObject(MSXML2.XMLHTTP)
xmlhttp.Open รับ url เท็จ
xmlhttp.ส่ง
ถ้า xmlhttp.Status<>200 ให้ออกจากฟังก์ชัน
GetBody = xmlhttp.ResponseBody
แนวคิดของ Liu Yongfa (www.yongfa365.com) คือการค้นหาตามสตริงที่ส่งคืนและค้นหาส่วนหัวของไฟล์ หากไม่มี ให้ใช้ GB2312 โดยทั่วไป การเข้ารหัสสามารถจับคู่ได้โดยตรง
'เมื่อดูที่สตริงที่ส่งคืน แม้ว่าตัวอักษรจีนจะอ่านไม่ออก แต่ก็ไม่ส่งผลต่อการเข้ารหัสของเรา
GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.ResponseText, True)(0)
'ดูการเข้ารหัสในไฟล์ส่วนหัว
ถ้า Len(GetCodePage)<3 ดังนั้น GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.getResponseHeader(Content-Type) , True)(0)
ถ้า Len(GetCodePage)<3 ดังนั้น GetCodePage = gb2312
ตั้งค่า xmlhttp = ไม่มีเลย
'ประโยคต่อไปนี้ควรถูกบล็อกเมื่อใช้อย่างเป็นทางการ
WScript.Echo url & --> & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
สิ้นสุดฟังก์ชัน
ฟังก์ชั่น BytesToBstr (เนื้อความ, Cset)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
objstream สลัว
ตั้ง objstream = CreateObject (adodb.stream)
objstream.Type = 1
objstream โหมด = 3
objstream.เปิด
objstream เขียนเนื้อหา
objstream ตำแหน่ง = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.ปิด
ตั้ง objstream = ไม่มีเลย
สิ้นสุดฟังก์ชัน