J'étudie le codage de pages Web depuis longtemps, car récemment, je dois concevoir un script VBS pour une détection conviviale des liens, et les pages des personnes vers lesquelles vous créez un lien sont susceptibles d'être dans différents encodages'/*===== ======== =========================================== ======== ==========
'*Intro J'étudie le codage de pages Web depuis longtemps, car récemment, je dois concevoir un script VBS pour une détection conviviale des liens, et la page de la personne vers laquelle vous créez un lien est susceptible d'être dans différents encodages. La méthode précédente était : si. il ne peut pas être trouvé en utilisant GB2312, puis utilisez UTF -8 Check, et vous ne trouvez aucune preuve que l'autre partie n'a pas établi de lien vers vous. Bien que ce ne soit pas correct à 100 %, c'est presque la même chose. deux codes. J'ai vu par hasard une idée à une adresse dans mes favoris, il est enfin possible de déterminer automatiquement l'encodage des pages web lors de la collecte d'articles. Parce que ce problème me dérange depuis longtemps au cours du processus de recherche, même si cela semble simple maintenant, beaucoup de gens doivent encore le rechercher, j'ai donc posté ces trois fonctions.
' * NomFichier GetWebCodePage.vbs
' * Auteur yongfa365
' *Version v2.0
' * WEB http://www.yongfa365.com
' * Envoyer un e-mail à yongfa365[at]qq.com
' * FirstWrite http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' * MadeTime 2008-01-29 20:55:46
' * Dernière modification 30/01/2008 20:55:46
' *================================================= ==========================*/
Appelez getHTTPPage(http://www.baidu.com/)
Appelez getHTTPPage(http://www.google.com/)
Appelez getHTTPPage(http://www.yongfa365.com/)
Appelez getHTTPPage(http://www.cbdcn.com/)
Appelez getHTTPPage(http://www.csdn.net/)
'Obtenir le contenu correspondant et renvoyer le tableau
'getContents(expression, chaîne, s'il faut renvoyer une valeur de référence)
'msgbox getContents(a(.+?)b, a23234b ab a67896896b sadfasdfb, True)(0)
Fonction getContents(patrn, strng, yinyong)
'par www.yongfa365.com Veuillez conserver le lien lors de la réimpression, afin que les utilisateurs finaux puissent obtenir les dernières informations mises à jour à temps
En cas d'erreur, reprendre ensuite
Définir re = Nouvelle RegExp
re.Pattern = motif
re.IgnoreCase = Vrai
re.Global = Vrai
Définir les correspondances = re.Execute(strng)
Si yinyong alors
Pour i = 0 À Matches.Count -1
Si Matches(i).Value<> Alors RetStr = RetStr & Matches(i).SubMatches(0) & Liu Yongfa
Suivant
Autre
Pour chaque oMatch dans les matchs
Si oMatch.Value<> Alors RetStr = RetStr & oMatch.Value & Liu Yongfa
Suivant
Fin si
getContents = Split (RetStr, Liu Yongfa)
Fonction de fin
Fonction getHTTPPage(url)
En cas d'erreur, reprendre ensuite
Définir xmlhttp = CreateObject (MSXML2.XMLHTTP)
xmlhttp.Open Obtenir, URL, False
xmlhttp.Envoyer
Si xmlhttp.Status<>200, alors quittez la fonction
GetBody = xmlhttp.ResponseBody
L'idée de Liu Yongfa (www.yongfa365.com) est d'abord de rechercher en fonction de la chaîne renvoyée et de trouver l'en-tête du fichier. S'il n'est pas encore là, utilisez GB2312. Généralement, l'encodage peut être directement mis en correspondance.
« En regardant la chaîne renvoyée, même si les caractères chinois sont tronqués, cela n'affecte pas notre encodage.
GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.ResponseText, True)(0)
'Regardez l'encodage dans le fichier d'en-tête
Si Len(GetCodePage)<3 Then GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.getResponseHeader(Content-Type) , True)(0)
Si Len(GetCodePage)<3 Alors GetCodePage = gb2312
Définir xmlhttp = Rien
« La phrase suivante doit être bloquée lorsqu'elle est utilisée formellement.
URL WScript.Echo & --> & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
Fonction de fin
Fonction BytesToBstr (Corps, Cset)
En cas d'erreur, reprendre ensuite
Dim objstream
Définir objstream = CreateObject (adodb.stream)
objstream.Type = 1
objstream.Mode = 3
objstream.Ouvrir
objstream.Écrire le corps
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Fermer
Définir objstream = Rien
Fonction de fin