ดูโค้ด:
var xmlhttp=getHTTPObject();
var post="ทดสอบ·ทดสอบ+ทดสอบ·";
xmlhttp.open('POST', 'test.asp?random='+Math.random(), จริง);
xmlhttp.setrequestheader("ความยาวเนื้อหา",post.length);
xmlhttp.setRequestHeader("ประเภทเนื้อหา", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = ฟังก์ชั่น(){
ถ้า (xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
การแจ้งเตือน (xmlhttp.responseText);
กลับเป็นจริง;
-
-
xmlhttp.send("act="escape(post));
ที่นี่ ฉันส่ง string Escape("test·test+test·") ในโหมด POST และใช้ setRequestHeader
เมื่อได้รับมันทางฝั่ง ASP ฉันใช้
<%Response.CodePage=936%>
<%Response.Charset="gb2312"
Response.Write Unescape(คำขอ("การกระทำ"))
-
สุดท้าย หลังจากการดีบัก ผลลัพธ์ที่คุณเห็นคือไม่มีทั้ง "·" และ "+" ปรากฏขึ้น
ตอนแรกฉันคิดว่ามันเป็นผลมาจากความไม่เข้ากันของ Escape และ unescape ใน asp และ javascript ต่อมาฉันใช้ vbsunescape (ดังที่แสดงด้านล่าง) แทน unescape และปัญหาก็ยังคงเหมือนเดิม
<script language = "javascript" runat = "เซิร์ฟเวอร์">
ฟังก์ชั่น vbsunescape (ที่มา) {
กลับ unescape (ที่มา);
}
</สคริปต์>
ฉันหนีจาก + แต่ฉันไม่รู้ว่าต้องทำอย่างไร มันแปลงเป็นอะไร เดิมทีฉันต้องการเขียนมันลงในไฟล์ไบนารี่เพื่อดู (ต้องเป็นไฟล์ไบนารี่) แต่ฉันใช้สตรีมเพื่อดำเนินการ ไฟล์ไบนารี่ภายใต้ asp ฉันทำผิดพลาดอยู่เสมอเมื่อสร้างไฟล์ ฉันไม่มีเวลาทำสิ่งนี้ ผู้เชี่ยวชาญที่เห็นบล็อกนี้ หากคุณแก้ไขได้ โปรดแจ้งให้เราทราบ ขอบคุณ!
ฟังก์ชั่น Escape2 (str) {
กลับหนี(str).replace(/+/g,"%2b");
}
---------------------------------------------------
ฉันเห็นคำตอบของทุกคนแล้ว ขอบคุณทุกคน หลังจากที่ดูดซับแก่นแท้ของความคิดของทุกคนแล้ว ในที่สุดฉันก็คิดออก - - -
วิธีแก้ปัญหาที่สมบูรณ์แบบขั้นสุดท้ายคือ
ผู้ส่งสามารถใช้ encodeURIComponent(escape(xxxxxxx)) (รหัสการส่งและรับอื่น ๆ นั้นเหมือนกับด้านบน)
ฉันลอง encodeURI เมื่อวานนี้เท่านั้นและไม่ได้คิดถึงวิธี encodeURIComponent และ Escape Socket ตอนนี้ฉันได้รับแรงบันดาลใจและลองทำแล้ว มันเยี่ยมมาก โอ้ย! ไปกิน! -