Ich beschäftige mich schon lange mit der Kodierung von Webseiten, da ich kürzlich ein VBS-Skript zur benutzerfreundlichen Linkerkennung entwerfen muss und die Seiten der Personen, auf die Sie verlinken, wahrscheinlich unterschiedliche Kodierungen aufweisen.'/*===== ======== ======================================== ======== ==========
'*Einleitung Ich habe mich schon lange mit der Codierung von Webseiten beschäftigt, da ich kürzlich ein VBS-Skript zur benutzerfreundlichen Linkerkennung entwerfen musste und die Seite der Person, auf die Sie verlinken, wahrscheinlich in verschiedenen Codierungen vorliegt. Die vorherige Methode war: if Es kann mit GB2312 nicht gefunden werden, dann verwenden Sie die UTF-8-Prüfung und können keinen Beweis dafür finden, dass die andere Partei keinen Link zu Ihnen erstellt hat. Obwohl es nicht 100 % korrekt ist, ist es fast dasselbe Ich habe versehentlich eine Idee bei einer Adresse in meinen Favoriten gesehen. Endlich ist es möglich, die Codierung von Webseiten beim Sammeln von Artikeln automatisch zu ermitteln. Da mich dieses Problem während des Rechercheprozesses schon lange beschäftigt hat, obwohl es jetzt einfach erscheint, müssen viele Leute immer noch danach suchen, also habe ich diese drei Funktionen gepostet.
' * Dateiname GetWebCodePage.vbs
' * Autor yongfa365
' * Version v2.0
' * WEB http://www.yongfa365.com
' * E-Mail an yongfa365[at]qq.com
' * FirstWrite http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' * MadeTime 29.01.2008 20:55:46
' * LastModify 2008-01-30 20:55:46
' *============================================= ==========================*/
Rufen Sie getHTTPPage(http://www.baidu.com/) auf.
Rufen Sie getHTTPPage(http://www.google.com/) auf.
Rufen Sie getHTTPPage(http://www.yongfa365.com/) auf.
Rufen Sie getHTTPPage(http://www.cbdcn.com/) auf.
Rufen Sie getHTTPPage(http://www.csdn.net/) auf.
'Holen Sie sich den passenden Inhalt und geben Sie das Array zurück
'getContents(Ausdruck, Zeichenfolge, ob ein Referenzwert zurückgegeben werden soll)
'msgbox getContents(a(.+?)b, a23234b ab a67896896b sadfasdfb ,True)(0)
Funktion getContents(patrn, strng, yinyong)
'von www.yongfa365.com Bitte bewahren Sie den Link beim Nachdruck auf, damit Endbenutzer rechtzeitig die neuesten aktualisierten Informationen erhalten
Bei Fehler Weiter fortsetzen
Setze re = New RegExp
re.Pattern = patrn
re.IgnoreCase = True
re.Global = True
Set Matches = re.Execute(strng)
Wenn Yinyong dann
Für i = 0 To Matches.Count -1
Wenn Matches(i).Value<> Then RetStr = RetStr & Matches(i).SubMatches(0) & Liu Yongfa
Nächste
Anders
Für jedes oMatch in Matches
Wenn oMatch.Value<> Then RetStr = RetStr & oMatch.Value & Liu Yongfa
Nächste
Ende wenn
getContents = Split(RetStr, Liu Yongfa)
Funktion beenden
Funktion getHTTPPage(url)
Bei Fehler Weiter fortsetzen
Setze xmlhttp = CreateObject(MSXML2.XMLHTTP)
xmlhttp.Open Get, URL, False
xmlhttp.Send
Wenn xmlhttp.Status<>200, dann Funktion beenden
GetBody = xmlhttp.ResponseBody
Die Idee von Liu Yongfa (www.yongfa365.com) besteht darin, zunächst anhand der zurückgegebenen Zeichenfolge zu suchen und den Dateiheader zu finden. Wenn dieser noch nicht vorhanden ist, kann die Codierung im Allgemeinen direkt abgeglichen werden.
„Wenn man sich die zurückgegebene Zeichenfolge ansieht, sind die chinesischen Zeichen zwar verstümmelt, dies hat jedoch keinen Einfluss auf unsere Codierung.“
GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.ResponseText, True)(0)
'Sehen Sie sich die Codierung in der Header-Datei an
Wenn Len(GetCodePage)<3, dann GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.getResponseHeader(Content-Type) , True)(0)
Wenn Len(GetCodePage)<3, dann ist GetCodePage = gb2312
Setze xmlhttp = Nothing
„Der folgende Satz sollte bei formeller Verwendung blockiert werden.“
WScript.Echo-URL & --> & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
Funktion beenden
Funktion BytesToBstr(Body, Cset)
Bei Fehler Weiter fortsetzen
Dunkler Objektstream
Setze objstream = CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode = 3
objstream.Öffnen
objstream.Write Body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Schließen
Setze objstream = Nothing
Funktion beenden