Les gens disent souvent qu'ils sont toujours troublés par le problème des caractères chinois tronqués lors de l'utilisation de XMLHTTP. J'ai vérifié certaines informations et le résultat m'a déçu. Tout le monde utilise la technologie côté serveur ASP pour résoudre ce problème.
Analysons d’abord pourquoi le problème des caractères chinois tronqués se produit. La raison est très simple : lorsque XMLHTTP obtient la réponse, il suppose que la réponse est codée en UTF8. Il traite le HTML contenant le codage GB2312 comme un format UTF8. Par conséquent, des caractères chinois tronqués apparaissent.
Ainsi, à part l’utilisation de la technologie de script côté serveur ASP, n’existe-t-il pas de solution côté client ? La réponse est : oui !
J'ai utilisé le script client VBScript pour implémenter avec succès la méthode sans utiliser ASP et j'ai résolu le problème des caractères chinois tronqués lorsque XMLHTTP explore les pages HTML.
Pourquoi utiliser VBScript au lieu du JScript couramment utilisé ? Le corps de réponse de XMLHTTP renvoie un tableau d'octets non signés. VBScript fournit de nombreuses fonctions pour manipuler les chaînes et formater les données, ainsi que des méthodes pour accéder aux tableaux sécurisés. Ces fonctions ou méthodes n'existent pas dans JScript. Ici, nous devons utiliser les fonctions intégrées de VBScript : MidB, AscB, LenB, etc., pour accéder à ResponseBody.
Pour m'éloigner du sujet, je n'insiste pas sur le fait que VBScript est meilleur que JScript, mais les deux ont leurs propres caractéristiques. C'est la première fois que j'écris un article sur CSDN. Merci pour votre soutien. La rédaction de cet article a deux objectifs : premièrement, vous former ; deuxièmement, j'espère que lorsque vous rencontrez des problèmes, vous pourrez apprendre à analyser les problèmes, à être ciblé et à savoir ce qui se passe et pourquoi.
J'ai donné le code Test.htm, qui comprend deux applications : obtenir son propre code et obtenir d'autres codes de pages web. Le script spécifique est le suivant :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN. ">
<!-- Auteur : Xiao Lin, [email protected] -->
<HTML>
<TÊTE>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>
<script langage=VBScript>
Fonction bytes2BSTR(vIn)
strRetour = ""
Pour i = 1 À LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
Si ThisCharCode < &H80 Alors
strReturn = strReturn & Chr(ThisCharCode)
Autre
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
je = je + 1
Fin si
Suivant
octets2BSTR = strReturn
Fin de la fonction
Fonction viewSource1()
dimXmlHttp
définir XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", document.location.href, false
XmlHttp.setRequestHeader "Type de contenu", "texte/XML"
XmlHttp.Envoyer
html atténué
html = octets2BSTR (XmlHttp.responseBody)
msgboxhtml
Fin de la fonction
Fonction viewSource2()
dimXmlHttp
définir XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Ouvrez "GET", " http://www.google.com ", false
XmlHttp.setRequestHeader "Type de contenu", "texte/XML"
XmlHttp.Envoyer
html atténué
html = octets2BSTR (XmlHttp.responseBody)
msgboxhtml
Fin de la fonction
</script>
<BODY bgcolor=gainsboro style='border:1pt solid white'>
<TABLE classe=texte>
<tr>
<td class=text>Solution de script complète côté client pour les caractères chinois tronqués lorsque XMLHTTP obtient des pages HTML</td>
</tr>
<tr>
<td class=button><button onclick=viewSource1()>Affichez votre propre code de page Web</button></td>
</tr>
<tr>
<td class=button><button onclick=viewSource2()>Afficher le code de la page d'accueil Google</button></td>
</tr>
</TABLE>
</CORPS>
</HTML>