ملاحظة: تقوم جميع المعلومات النصية المخزنة في جهاز كمبيوتر بحفظ الأحرف التي نعرفها (الأحرف الصينية أو الإنجليزية) في جدول تشفير معين (0 ، 1 ، 0 ، 1). يتم ترميز العملية الثنائية من الأحرف إلى تخزين الكمبيوتر ، وتسمى العملية من القراءة الثنائية إلى النص فك التشفير. هناك العديد من جداول الترميز المختلفة لترميز الأحرف ، لذلك إذا لم يكن تنسيق الترميز وتنسيق فك التشفير هو نفس جدول الرمز ، فسيظهر رمز مشوهة. لتجنب الرمز المشتعلة ، تحتاج إلى استخدام جدول الرمز نفسه عند حفظه والقراءة.
غالبًا ما تكون هناك رموز مشوهة في برمجة الويب Java. الآن اسمحوا لي أن أشرح بالتفصيل كيفية ضبطها لتجنب الرموز المشوهة.
1 صفحة ويب ترميز
عند كتابة صفحة ويب ، تحتاج إلى تحديد تنسيق الترميز لصفحة الويب واستخدام <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"> لتحديده. في هذا الوقت ، عندما يقرأ المتصفح أو يرسل الطلب ، سيتم حفظ البيانات أو إرسالها بتنسيق الترميز المحدد. هنا في شكل UTF-8.
على سبيل المثال رمز مقتطف:
<form action = "/pro1/bb" method = "post"> اسم المستخدم: <type type = "text" name = "username"> <br> الجنس: ذكر <type type = "radio" name = "gender" value = "male"> female <inpult type = "radio" name = "gender" value = type = "checkbox" name = "color" value = "green"> blue <input type = "checkbox" name = "color" value = "blue"> <br> البلدان من <select name = "country"> <ortion value = "china" value = "refet"> </form>
2 الواجهة الخلفية قراءة بيانات الطلب
في Servlet of Java Web ، من أجل الحصول على البيانات المطلوبة ، يجب فك تشفير البيانات الثنائية المرسلة وفقًا لجدول الكود المقابل للحصول على السلسلة المقابلة للقراءة البشرية. في هذا المثال ، يتم استخدام طريقة POST ، لذلك عند معالجة طلب POST ، تحتاج إلى تعيين تنسيق الترميز قبل الحصول على معلمات الطلب الصيني ، وإلا ستحدث الرمز المشتعلة. لأن الخادم يستخدم جدول تشفير ISO-8859-1 افتراضيًا لفك التشفير.
بالطبع ، إذا كنت ترغب في إخراج الأحرف الصينية في الإخراج ، فأنت بحاجة أيضًا إلى استخدام ترميز الأحرف الموحدة. هنا UTF-8 ، الرمز كما يلي
Public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {request.setcharacterencoding ("UTF-8") ؛ استجابة. printWriter out = response.getWriter () ؛ username string = request.getParameter ("اسم المستخدم") ؛ سلسلة الجنس = request.getParameter ("الجنس") ؛ String [] Colors = request.getParametervalues ("color") ؛ String Country = request.getParameter ("Country") ؛ Out.println ("<! doctype html>") ؛ out.println ("<head> <title> اختبار servlet </title> </head>") ؛ out.println ("<body>") ؛ Out.print ("<h1> فيما يلي إدخالك </h1>") ؛ Out.print ("<p>") ؛ out.print ("اسم المستخدم الخاص بك:"+اسم المستخدم+"<br>") ؛ out.print ("جنسك:"+الجنس+"<br>") ؛ Out.print ("لونك المفضل:") ؛ لـ (String cr: colors) {out.print (cr+"") ؛ } out.print ("<br>") ؛ Out.print ("بلدك:"+Country+"<br>") ؛ Out.print ("</p>") ؛ Out.println ("</body>") ؛ out.println ("</html>") ؛ }ملاحظة: request.setcharacterencoding ("UTF-8") ؛ هنا صالح فقط لمحتوى الكيان المستحيل. يتم تخزين معلمات طلب النشر في كيان الطلب ، ويتم وضع معلمات الطلب لطريقة GET بعد عنوان URL وتبدأ بعلامة استفهام ، و "و" توصيل معلمات متعددة. لذلك إذا كنت ترغب في الحصول على معلمات طريقة GET ، فأنت بحاجة إلى استخدام فك التشفير اليدوي أو استخدام المرشح.
طريقة فك التشفير اليدوي ، من أجل البساطة ، فقط فك التشفير بين الجنسين ، والاستخدام الفعلي ، يجب فك تشفير كل معلمة: سلسلة الجنس = سلسلة جديدة (req.getParameter ("الجنس"). getBytes ("ISO-8859-1") ، "UTF-8") ؛
في هذه المرحلة ، يمكن حل ظاهرة الأحرف الصينية المشوهة على شبكة الويب والخادم بشكل مثالي. تذكر شيئًا واحدًا: مشوّه من ناحية هو أن الترميز وفك التشفير يستخدمون جداول تشفير مختلفة. يجب عليك استخدام نفس جدول الترميز لحل المشكلة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.