Schauen Sie sich den Code an:
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 = function(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
alarm(xmlhttp.responseText);
return true;
}
}
xmlhttp.send("act="escape(post));
Hier habe ich die Zeichenfolge escape("test·test+test·") im POST-Modus gesendet und
beim Empfang auf der ASP-Seite
<%Response.CodePage=936%>
verwendet
<%Response.Charset="gb2312"
Response.Write Unescape(Request("act"))
%>
Schließlich sehen Sie nach dem Debuggen das Ergebnis, dass weder „·“ noch „+“ angezeigt wird.
Zuerst dachte ich, es sei das Ergebnis der Inkompatibilität von Escape und Unescape in Asp und Javascript. Später habe ich vbsunescape (wie unten gezeigt) anstelle von Unescape verwendet und das Problem blieb das gleiche.
<script language="javascript" runat="server">
function vbsunescape(source){
return unescape(source);
}
</script>
Ich habe das + entkommen, weiß aber nicht, in was es konvertiert wurde. Ich wollte es ursprünglich in eine Binärdatei schreiben, um es zu sehen (es muss eine Binärdatei sein), aber ich habe Stream verwendet, um es zu betreiben Binärdatei unter asp. Ich habe immer noch keine Zeit, dies zu tun, also begnüge ich mich vorerst damit, dieses Problem zu lösen Die Experten, die diesen Blog sehen, lassen Sie es mich wissen.
Funktion escape2(str){
return escape(str).replace(/+/g,"%2b");
}
---------------------------------
Ich habe alle Antworten gesehen, vielen Dank an alle. Nachdem ich die Essenz aller Gedanken in mich aufgenommen hatte, fand ich es endlich heraus. . . .
Die endgültige perfekte Lösung besteht darin, dass
der Absender encodeURIComponent(escape(xxxxxx)) verwenden kann (die anderen Sende- und Empfangscodes sind die gleichen wie oben
und habe plötzlich nicht mehr an die encodeURIComponent- und Escape-Socket-Methoden gedacht). Jetzt habe ich mich inspirieren lassen und es ausprobiert, es ist großartig, OHYEAH! Geh essen! !