لقد كنت أدرس ترميز صفحات الويب لفترة طويلة، لأنني اضطررت مؤخرًا إلى تصميم برنامج نصي VBS لاكتشاف الارتباط السهل، ومن المحتمل أن تكون صفحات الأشخاص الذين ترتبط بهم بترميزات مختلفة'/*===== =================================================================================================== ======== ==========
'*مقدمة لقد كنت أدرس ترميز صفحات الويب لفترة طويلة، لأنني اضطررت مؤخرًا إلى تصميم برنامج نصي VBS لاكتشاف الروابط الودية، ومن المحتمل أن تكون صفحة الشخص الذي ترتبط به بترميزات مختلفة، وكانت الطريقة السابقة هي: if لا يمكن العثور عليه باستخدام GB2312، ثم استخدم UTF -8 Check، ولا يمكن العثور على أي دليل على أن الطرف الآخر لم يرتبط بك. على الرغم من أنه ليس صحيحًا بنسبة 100٪، إلا أنه نفس الشيء تقريبًا. هناك المزيد من الأشخاص الذين يستخدمون هذه الأشياء لقد رأيت بالصدفة فكرة على عنوان في المفضلة، وأصبح من الممكن أخيرًا تحديد تشفير صفحات الويب تلقائيًا عند جمع المقالات. نظرًا لأن هذه المشكلة كانت تزعجني لفترة طويلة أثناء عملية البحث، على الرغم من أنها تبدو بسيطة الآن، إلا أن الكثير من الأشخاص لا يزالون يبحثون عنها، لذلك قمت بنشر هذه الوظائف الثلاث.
'* اسم الملف GetWebCodePage.vbs
' * المؤلف yongfa365
'* الإصدار v2.0
'* الويب http://www.yongfa365.com
'* أرسل بريدًا إلكترونيًا إلى yongfa365[at]qq.com
' * الكتابة الأولى http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' * MadeTime 2008-01-29 20:55:46
' * LastModify 2008-01-30 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 ,True)(0)
الدالة getContents(pattern, strng, yinyong)
'بواسطة www.yongfa365.com يرجى الاحتفاظ بالرابط عند إعادة الطباعة، حتى يتمكن المستخدمون النهائيون من الحصول على أحدث المعلومات المحدثة في الوقت المناسب
على خطأ استئناف التالي
تعيين إعادة = جديد RegExp
إعادة نمط = نمط
re.IgnoreCase = صحيح
re.Global = صحيح
تعيين التطابقات = re.Execute(strng)
إذا yinyong ثم
لأني = 0 إلى عدد التطابقات -1
إذا كانت Matches(i).Value<> ثم RetStr = RetStr & Matches(i).SubMatches(0) & Liu Yongfa
التالي
آخر
لكل oMatch في المباريات
إذا كانت oMatch.Value<> ثم RetStr = RetStr & oMatch.Value & Liu Yongfa
التالي
نهاية إذا
getContents = سبليت (RetStr، ليو يونغفا)
وظيفة النهاية
الدالة getHTTPPage(url)
على خطأ استئناف التالي
تعيين xmlhttp = CreateObject(MSXML2.XMLHTTP)
xmlhttp.Open احصل على، URL، خطأ
xmlhttp.Send
إذا كان 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(Body, Cset)
على خطأ استئناف التالي
تيار كائن خافت
تعيين objstream = CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode = 3
objstream.Open
objstream.اكتب النص
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
تعيين objstream = لا شيء
وظيفة النهاية