تنقسم مشاكل أجاكس الصينية إلى فئتين:
1) المعلمات الموجودة في مسار الإرسال باللغة الصينية، وقيم المعلمات المستلمة في قسم الخادم مشوهة.
على سبيل المثال:
فار url="a.jsp?name=Xiao Li";
xmlHTTP.open ("post"، url، true)؛
حل:
استخدم أساليب الهروب () أو encodeURI () التي توفرها جافا سكريبت، على سبيل المثال:
عميل:
فار url="a.jsp?name=Xiao Li";
url=encodeURI(url);
url=encodeURI(url); // مرتين، مهم جدًا [لا أعرف السبب بالضبط]
/***************************************************/
يكتب بعض الأشخاص أيضًا var url="a.jsp?name=escape("Xiao Li""");
الوظيفة مشابهة لطريقة encodeURI.
/***************************************************/
xmlHTTP.setrequestheader("cache-control"،"no-cache");
xmlHTTP.setrequestheader("Content-Type"،"application/x-www-form-urlencoded");
xmlHTTP.setrequestheader("contentType"،text/html;charset=uft-8")//حدد تنسيق ترميز البيانات المرسلة
xmlHTTP.open ("post"، url، true)؛
جانب الخادم:
اسم السلسلة = request.getParameter("name");
name = java.net.URLDecoder.decode("name", "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.