He estado estudiando la codificación de páginas web durante mucho tiempo, porque recientemente tuve que diseñar un script VBS para una detección amigable de enlaces, y es probable que las páginas de las personas a las que enlazas estén en varias codificaciones'/*===== ======== =========================================== ======== ==========
'*Introducción He estado estudiando la codificación de páginas web durante mucho tiempo, porque recientemente tuve que diseñar un script VBS para la detección amigable de enlaces, y es probable que la página de la persona a la que estás enlazando tenga varias codificaciones. El método anterior era: if. no se puede encontrar usando GB2312, luego use UTF -8 Check y no puedo encontrar ninguna prueba de que la otra parte no se vinculó con usted. Aunque no es 100% correcto, es casi lo mismo. Hay más personas que los usan. Dos códigos. Accidentalmente vi una idea en una dirección en mis favoritos, finalmente es posible determinar automáticamente la codificación de las páginas web al recopilar artículos. Debido a que este problema me ha estado molestando durante mucho tiempo durante el proceso de investigación, aunque ahora parece simple, mucha gente todavía debe estar buscándolo, así que publiqué estas tres funciones.
' * Nombre de archivo GetWebCodePage.vbs
' *Autor yongfa365
' * Versión v2.0
' * WEB http://www.yongfa365.com
' * Correo electrónico yongfa365[arroba]qq.com
' * Primera escritura http://www.yongfa365.com/Item/GetWebCodePage.vbs.html
' *MadeTime 2008-01-29 20:55:46
' * Última modificación 2008-01-30 20:55:46
' *================================================== ============================*/
Llame a getHTTPPage (http://www.baidu.com/)
Llame a getHTTPPage(http://www.google.com/)
Llame a getHTTPPage (http://www.yongfa365.com/)
Llame a getHTTPPage(http://www.cbdcn.com/)
Llame a getHTTPPage (http://www.csdn.net/)
'Obtiene el contenido coincidente y devuelve la matriz
'getContents(expresión, cadena, si se debe devolver un valor de referencia)
'msgbox getContents(a(.+?)b, a23234b ab a67896896b sadfasdfb, Verdadero)(0)
Función getContents(patrón, cadena, yinyong)
'por www.yongfa365.com Conserve el enlace al reimprimir, para que los usuarios finales puedan obtener la información actualizada más reciente a tiempo
En caso de error Continuar siguiente
Establecer re = Nueva expresión regular
re.Patrón = patrón
re.IgnoreCase = Verdadero
re.Global = Verdadero
Establecer coincidencias = re.Execute(string)
Si yinyong entonces
Para i = 0 Para coincidencias.Count -1
Si coincide(i).Value<> Entonces RetStr = RetStr y coincide(i).SubMatches(0) y Liu Yongfa
Próximo
Demás
Para cada oMatch en partidos
Si oMatch.Value<> Entonces RetStr = RetStr y oMatch.Value y Liu Yongfa
Próximo
Terminar si
getContenido = Dividir(RetStr, Liu Yongfa)
Función final
Función getHTTPPage(url)
En caso de error Continuar siguiente
Establecer xmlhttp = CrearObjeto(MSXML2.XMLHTTP)
xmlhttp.Open Obtener, URL, Falso
xmlhttp.Enviar
Si xmlhttp.Status<>200, entonces salga de la función
GetBody = xmlhttp.ResponseBody
La idea de 'Liu Yongfa (www.yongfa365.com) aquí es buscar primero según la cadena devuelta y encontrar el encabezado del archivo. Si aún no está allí, use GB2312. Generalmente, la codificación se puede hacer coincidir directamente.
'Mirando la cadena devuelta, aunque los caracteres chinos están confusos, eso no afecta nuestra codificación.
GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.ResponseText, True)(0)
'Mira la codificación en el archivo de encabezado.
Si Len(GetCodePage)<3 Entonces GetCodePage = getContents(charset=[']*([^,']+), xmlhttp.getResponseHeader(Content-Type), True)(0)
Si Len(GetCodePage)<3 Entonces GetCodePage = gb2312
Establecer xmlhttp = Nada
'La siguiente frase debería bloquearse cuando se utilice formalmente.
WScript.Echo URL & --> & GetCodePage
getHTTPPage = BytesToBstr(GetBody, GetCodePage)
Función final
Función BytesToBstr(Cuerpo, Cset)
En caso de error Continuar siguiente
flujo de objetos tenue
Establecer objstream = CreateObject(adodb.stream)
objstream.Tipo = 1
objstream.Modo = 3
objstream.Abrir
objstream.Escribir cuerpo
objstream.Posición = 0
objstream.Tipo = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Cerrar
Establecer objstream = Nada
Función final