La gente suele decir que siempre les preocupa el problema de los caracteres chinos confusos cuando utilizan XMLHTTP. Revisé cierta información y el resultado me decepcionó. Todos usan tecnología del lado del servidor ASP para resolver este problema.
Primero analicemos por qué ocurre el problema de los caracteres chinos confusos. La razón es muy simple: cuando XMLHTTP obtiene la respuesta, asume que la respuesta está codificada en UTF8. Trata el HTML que contiene codificación GB2312 como formato UTF8.
Entonces, aparte de utilizar la tecnología de secuencias de comandos del lado del servidor ASP, ¿no existe ninguna solución del lado del cliente? La respuesta es: ¡sí!
Utilicé el script del cliente VBScript para implementar con éxito el método sin usar ASP y resolví el problema de los caracteres chinos confusos cuando XMLHTTP rastrea páginas HTML.
¿Por qué utilizar VBScript en lugar del comúnmente utilizado JScript? ResponseBody de XMLHTTP devuelve una matriz de bytes sin firmar. VBScript proporciona muchas funciones para manipular cadenas y formatear datos, así como métodos para acceder a matrices seguras. Estas funciones o métodos no existen en JScript. Aquí necesitamos usar las funciones integradas de VBScript: MidB, AscB, LenB, etc., para acceder a ResponseBody.
Para hacer una digresión, no estoy enfatizando que VBScript sea mejor que JScript, pero ambos tienen sus propias características. Esta es la primera vez que escribo un artículo sobre CSDN. Gracias por su apoyo. Hay dos propósitos al escribir este artículo: primero, capacitarse; segundo, espero que cuando encuentre problemas, pueda aprender a analizarlos, ser objetivo y saber qué está sucediendo y por qué.
Le di el código Test.htm, que incluye dos aplicaciones: obtener su propio código y obtener otros códigos de páginas web. El script específico es el siguiente:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN. ">
<!-- Autor: Xiao Lin, [email protected] -->
<HTML>
<CABEZAL>
<META http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
</HEAD>
<script language=VBScript>
Función bytes2BSTR(vIn)
strRetorno = ""
Para i = 1 a LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
Si ThisCharCode < & H80 Entonces
strReturn = strReturn & Chr(ThisCharCode)
Demás
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
yo = yo + 1
Terminar si
Próximo
bytes2BSTR = strReturn
Función final
Función viewSource1()
dimXmlHttp
establecer XmlHttp = CreateObject ("Microsoft.XMLHTTP")
XmlHttp.Open "GET", document.location.href, falso
XmlHttp.setRequestHeader "Tipo de contenido", "texto/XML"
XmlHttp.Enviar
HTML oscuro
html = bytes2BSTR(XmlHttp.responseBody)
msgboxhtml
Función final
Función viewSource2()
dimXmlHttp
establecer XmlHttp = CreateObject ("Microsoft.XMLHTTP")
XmlHttp.Open "GET", " http://www.google.com ", falso
XmlHttp.setRequestHeader "Tipo de contenido", "texto/XML"
XmlHttp.Enviar
HTML oscuro
html = bytes2BSTR(XmlHttp.responseBody)
msgboxhtml
Función final
</script>
<BODY bgcolor=gainsboro style='border:1pt solid white'>
<TABLA clase=texto>
<tr>
<td class=text>Solución completa de script del lado del cliente para caracteres chinos confusos cuando XMLHTTP obtiene páginas HTML</td>
</tr>
<tr>
<td class=button><button onclick=viewSource1()>Ver el código de su propia página web</button></td>
</tr>
<tr>
<td class=button><button onclick=viewSource2()>Ver código de la página de inicio de Google</button></td>
</tr>
</TABLA>
</CUERPO>
</HTML>