تعد مشكلة الكود المشوهة الصيني مشكلة صعبة للغاية ، خاصة بعد نقلها من مكتب الاستقبال إلى المكتب الخلفي ، لا أعرف أين تكمن المشكلة. نحن الآن نشارك 3 طرق لحل مشكلة الصينيين المشوهة في المكاتب الأمامية والخلفية في Javaweb.
الطريقة 1:
ترميز Tomcat الخاص بتنسيق ISO-8859-1 ولا يتوافق مع الترميز الصيني. لذلك يجب أن ننتبه عند الاستلام من الخلفية.
استخدم نفس التنسيق لتلقيه (ISO-8859-1) ، ثم قم بتحويله بترميز قابل للتشفير (UTF-8). وبهذه الطريقة ، يمكننا الحصول على تنسيق متوافق مع الصينية. بعد هذه المعالجة ، أرسلها إلى مكتب الاستقبال. ملاحظة: تحتاج إلى ضبطه عند الإرسال إلى المقدمة
Resp.SetContentType ("Text/HTML ؛ Charset = UTF-8") ؛ // قم بتعيين ترميز حرف الصفحة لحل مشكلة النص الصيني المشوه على الواجهة.
خدمة void المحمية (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException {// لأن tomcat يأتي مع تشفير ISO-8859-1
// إحدى الطرق لحل الكود المشوهة <span style = "White-Space: Pre"> </span> name = req.getParameter ("اسم المستخدم") ؛ </span> string pwd = req.getParameter ("pwd") ؛ // استخدام تنسيق tomcat (ISO-8859-1) يستخدم للقراءة. <span style = "White-Space: pre"> </span> String str = new String (B ، "UTF-8") ؛ // استخدم UTF-8 لتوصيل السلسلة <span style = "White-Space: Pre )
<span style = "White-Space: Pre" </span> printwriter pw = resp.getWriter () ؛ > <font size = '5px' color = 'red'> اسم المستخدم: "> </span> pw.print (str1) ؛ printWriter pw = resp.getWriter () ؛ string str1 =" <html> <body> <font size = '5px' color = 'red'> username: "+name +"pwd:"+pwd+"</font> </body> </html>" ؛
الطريقة 2:
لأن الطريقة معقدة ، يتم استخدام إعداد بسيط. مجرد جملة بسيطة
req.setcharacterencoding ("UTF-8") ؛ // يجب كتابتها في المقام الأول لأن هذه الطريقة تستخدم لقراءة البيانات ، وإلا فإن البيانات ستكون غير صحيحة.
بهذه الطريقة ، ليست هناك حاجة إلى الإعداد مرهقة كما كان من قبل
خدمة void المحمية (httpservletrequest req ، httpservletresponse resp) ترمي servletexception ، ioException {// لأن tomcat يأتي مع الترميز هو iso-8859-1 format // solve gall اثنين "اثنين" cumbersome》 req.setcharctering ("utf-8 ") ؛ // يجب كتابتها في المقام الأول لأن هذه الطريقة تستخدم لقراءة البيانات ، وإلا فإن البيانات ستكون غير صحيحة. // اضبط بهذه الطريقة للقراءة. بهذه الطريقة ، يمكن قراءة الصينية ، ولكن هناك حاجة إلى الاهتمام. يجب إرسال النموذج بواسطة <span style = "color:#ff0000 ؛"> method = 'post' </span> resp.setContentType ("text/html ؛ charset = utf-8") الترميز على اسم سلسلة الصفحة = req.getParameter ("اسم المستخدم") ؛ size font = '5px' color = 'red'> اسم المستخدم:
الطريقة 3:
يتم تعديل هذا على أساس اثنين من dharmas. على الرغم من أنه يمكننا تعديل تنسيق الترميز للقراءة ، بالنظر إلى أن المستخدم لن يقوم بالتأكيد بتعديله ، إلا أننا نحتاج إلى تبني طريقة أكثر عمومية للسماح للمستخدم بتعديل ملف التكوين. أي أن ملف web.xml يحتاج إلى تعديل المحتويات في web.xml ، أي أن ترميز الأحرف يتم استلامه من XML. يتطلب معلمات التكوين في ملف XML.
الرمز كما يلي:
<Sradlet> <Sradlet-Name> تشفير </servlet-name> <Sradlet-Class> cn.hncu.com.encode.encodeing </servlet-class -name> <Param-value> utf-8 </parm-value> // يمكن ملء المحتويات هنا من قبل المستخدم (يجب أن يكون في تنسيق الترميز) </init-param> </vervlet>
نعلم أن التبادل بين المقدمة والخلفية يجب تنفيذه من خلال تكوين web.xml.
Public void init (servletconfig config) يلقي servletexception {charset = config.getInitParameter ("charset") ؛ // الحصول على معلمات التهيئة. بالطبع ، يجب تعيين Charset كمتغير عالمي. يجب تعيين وظيفة الخدمة اللاحقة
req.setcharencoding (charset) ؛ pw = resp.getWriter () ؛ > </html> "؛ pw.print (str1) ؛
تم حل الافتراضات:
قبل حل:
بعد القرار:
رمز مكتب الاستقبال:
<Body> <form Action = "Login" method = "post"> // تم تكوين تسجيل الدخول في web.xml ، ويمكن قراءة اسم المستخدم للبيانات في الخلفية: <إدخال type = "text" name = "username "/> <br/> كلمة المرور: <إدخال type =" password "name =" pwd "/> <br/> <إدخال type =" إرسال "value =" login "/> </form> </body>
ما ورد أعلاه هي ثلاث طرق لحل مشكلة الصينيين المشوهة في المكاتب الخلفية في Javaweb ، وخاصة مشكلة الصينيين المشوهة في الصينيين بعد نقلها من مكتب الاستقبال إلى الخلفية.