Regardez le code :
var xmlhttp=getHTTPObject();
var post="test·test+test·";
xmlhttp.open('POST', 'test.asp?random='+Math.random(), true);
xmlhttp.setrequestheader("content-length",post.length);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = fonction(){
si (xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
alerte(xmlhttp.responseText);
renvoie vrai ;
}
}
xmlhttp.send("act="escape(post));
Ici, j'ai envoyé la chaîne escape("test·test+test·") en mode POST et utilisé setRequestHeader
Lors de sa réception côté ASP, j'ai utilisé
<%Response.CodePage=936%>.
<%Response.Charset="gb2312"
Réponse.Write Unescape(Request("act"))
%>
Finalement, après débogage, le résultat que vous voyez est que ni "·" ni "+" ne sont affichés.
Au début, je pensais que c'était le résultat de l'incompatibilité de escape et unescape en asp et javascript. Plus tard, j'ai utilisé vbsunescape (comme indiqué ci-dessous) au lieu de unescape et le problème est resté le même.
<script langage="javascript" runat="server">
fonction vbsunescape(source){
return unescape(source);
}
</script>
J'ai échappé au +, mais je ne sais pas comment faire. En quoi s'est-il converti ? Au départ, je voulais l'écrire dans un fichier binaire pour voir (ce doit être un fichier binaire), mais j'ai utilisé stream pour faire fonctionner le fichier binaire sous asp. Je continue de faire des erreurs lors de la création de fichiers. Je n'ai pas le temps de faire ça, donc je vais me contenter de quelques évasions pour l'instant. les experts qui voient ce blog. Si vous le résolvez, faites-le-moi savoir.
fonction escape2(str){
return escape(str).replace(/+/g,"%2b");
}
-----------------------------------------------
J'ai vu les réponses de tout le monde, merci à tous. Après avoir absorbé l’essence des pensées de chacun, j’ai finalement compris. . . .
La solution parfaite finale est que
l'expéditeur peut utiliser encodeURIComponent(escape(xxxxxxx)) (les autres codes d'envoi et de réception sont les mêmes que ci-dessus).
Je n'ai essayé encodeURI qu'hier et je n'ai pas pensé aux méthodes encodeURIComponent et escape socket. maintenant je me suis inspiré et je l'ai essayé, c'est génial, OHYEAH ! Allez manger ! !