ปัญหาภาษาจีนของ AJAX แบ่งออกเป็น 2 ประเภท คือ
1) พารามิเตอร์ในเส้นทางการส่งเป็นภาษาจีน และค่าพารามิเตอร์ที่ได้รับในส่วนเซิร์ฟเวอร์จะอ่านไม่ออก
ตัวอย่างเช่น:
var url="a.jsp?name=เซียวหลี่";
xmlHTTP.open ("โพสต์", url, จริง);
สารละลาย:
ใช้เมธอด Escape() หรือ encodeURI() ที่ได้รับจาก JavaScript เช่น:
ลูกค้า:
var url="a.jsp?name=เซียวหลี่";
url=encodeURI(URL);
url=encodeURI(url); //สองครั้ง สำคัญมาก [ฉันไม่รู้ว่าทำไม]
-
บางคนยังเขียน var url="a.jsp?name=escape("Xiao Li"");
ฟังก์ชันนี้คล้ายกับวิธี encodeURI
-
xmlHTTP.setrequestheader("แคชควบคุม", "ไม่มีแคช");
xmlHTTP.setrequestheader("ประเภทเนื้อหา", "application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//ระบุรูปแบบการเข้ารหัสของข้อมูลที่ส่ง
xmlHTTP.open ("โพสต์", url, จริง);
ฝั่งเซิร์ฟเวอร์:
ชื่อสตริง = request.getParameter("name");
ชื่อ = java.net.URLDecoder.decode("ชื่อ", "UTF-8");
2) ค่า responseText หรือ responseXML ที่ส่งคืนมีอักขระภาษาจีนและอ่านไม่ออก เหตุผล: AJAX ถอดรหัสค่า responseText หรือ responseXML ตามรูปแบบ UTF-8 เมื่อได้รับข้อมูล หากข้อมูลที่ส่งโดยส่วนเซิร์ฟเวอร์ไม่อยู่ในรูปแบบ UTF-8 , จากนั้นค่าที่ได้รับจาก responseText หรือ responseXML อาจอ่านไม่ออก
วิธีแก้ไข: ระบุรูปแบบการส่งข้อมูลบนเซิร์ฟเวอร์:
ในไฟล์ jsp:
response.setContentType("text/text;charset=UTF-8");//สิ่งที่ส่งคืนคือไฟล์ข้อความ txt หรือ
response.setContentType("text/xml;charset=UTF-8");//ส่งคืนไฟล์ xml
สรุป: 1) รูปแบบของข้อมูลที่ส่ง Ajax เป็น utf-8 โดยค่าเริ่มต้น โดยใช้เมธอด Escape() หรือ encodeURI() ที่ได้รับจาก javascript เมื่อได้รับทางฝั่งเซิร์ฟเวอร์ ให้ใช้ java.net.URLDecoder.decode("", วิธีการถอดรหัส "UTF -8")
2) การเข้ารหัสอักขระเริ่มต้นของข้อมูลที่ส่งกลับโดย xtmlhttp คือ utf-8 ดังนั้นเมื่อเซิร์ฟเวอร์ต้องการส่งข้อมูลไปยังไคลเอนต์ ก็ต้องใช้การเข้ารหัส utf-8 ด้วย หากวิธีการข้างต้นยังคงไม่สามารถแก้ไขปัญหาที่อ่านไม่ออกได้ คุณสามารถลองแปลงไฟล์ jsp, htm, java จะถูกบันทึกในรูปแบบการเข้ารหัส UTF-8
กล่าวโดยย่อ: เพียงใช้การเข้ารหัส UTF-8 สำหรับการโต้ตอบข้อมูลทั้งด้านหน้าและด้านหลัง
บทความนี้มาจากบล็อก CSDN โปรดระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ: http://blog.csdn.net/jiaoxiaguoke/archive/2009/12/31/5110991.aspx