عند نشر برنامج خدمات الويب اليوم، واجه servlet الذي يحصل على البيانات من الصفحة مشكلة مشوهة. في servlet، قمت بإضافة النص request.setCharacterEncoding("GB2312");
يمكنك العثور على المعلومات عبر الإنترنت، كما يلي: JAVA هو ترميز Unicode، حيث تقوم أولاً بتحويله إلى ISO8859-1، ثم تحويله إلى GBK أو GB2312.
كود جافا
هذا صيني!
هناك طريقة أسهل وهي ضبط تحويل الترميز مباشرة في الخادم. يتم استخدام TOMCAT5.0.28.
ابحث عن ملف SERVER.XML في الدليل ../Tomcat 5.0/conf، وافتحه باستخدام برنامج WordPad، وقم بتعيينه على النحو التالي:
ما عليك سوى إضافة سمة بالداخل، URIEncoding = "GBK"
تم اجتياز الاختبار وتم تنفيذه. ثم هناك الدور الذي تلعبه الجملة request.setCharacterEncoding("GB2312"). إذا لم تتمكن من حل المشكلة الفوضوية، فما هو الدور الذي نستخدمه لتلعبه؟
(1) صفحة JSP باللغة الصينية، ولكن عندما تنظر إليها تجدها مشوهة:
الحل هو تشفير صفحة JSP، نظرًا لمشكلة الترميز عند تحويل JSP إلى ملف Java، تستخدم بعض الخوادم ISO-8859-1 بشكل افتراضي. 1 يمثل بالتأكيد مشكلة يمكننا تأكيد ذلك من خلال النظر إلى ملف Java الوسيط الذي تم إنشاؤه بواسطة Jasper.
(2) عند استخدام كائن الطلب للحصول على رمز الحرف الصيني المقدم من العميل، ستظهر أحرف مشوهة:
الحل هو تكوين عامل التصفية، وهو مرشح Servicelet الكود كما يلي:
request.setCharacterEncoding("GBK");
// تمرير التحكم إلى الفلتر التالي
chain.doFilter(request, Response);
}
<تصفية التعيين></تصفية التعيين>
<filter-name></filter-name>تعيين ترميز الأحرف
<نمط URL></نمط URL>/*
هناك أيضًا معالجة المعلومات التي تحتوي على أحرف صينية، ورمز المعالجة هو:
الحل هو:
1) افتح ملف server.xml الخاص بـ Tomcat، وابحث عن الكتلة، وأضف السطر التالي:
URIEncoding=”GBK”
يجب أن يكون الكامل على النحو التالي:
(4) توجد أحرف صينية في صفحة JSP وأحرف صينية على الأزرار، ولكن عند عرض الصفحة من خلال الخادم تظهر أحرف مشوهة:
الحل هو: أولاً، لا ينبغي تضمين نص الرسالة المترجمة مباشرة في ملف JSP، ولكن يجب الحصول على النص من حزمة الموارد من خلال علامة <bean:message>. يجب عليك وضع النص الصيني الخاص بك في ملف Application.properties. يتم وضع هذا الملف ضمن WEB-INF/classes/*. على سبيل المثال، إذا كان لدي علامتان للاسم والعمر على الصفحة، فأنا بحاجة أولاً إلى إنشاء تطبيق. يجب أن يكون المحتوى الموجود بالداخل هو name = "name" age = "age"، ثم أضع هذا الملف ضمن WEB-INF/classes/properties/، ثم أقوم بتشفيره وفقًا لملف Application.properties لإنشاء ملف موارد صيني. ، بافتراض أن الاسم هو Application_cn.properties. يتم توفير الأمر original2ascii في JDK، والذي يمكنه تحقيق تحويل ترميز الأحرف. ابحث عن الدليل الذي وضعت فيه ملف Application.properties في بيئة DOS. قم بتنفيذ الأمر في بيئة DOS. سيتم إنشاء ملف المورد الصيني Application_cn.properties المشفر في GBK: Native2ascii ?encoding gbk Application.properties Application_cn.properties في المستقبل، سيتم إنشاء ملف Application_cn.properties بالمحتوى التالي: name=u59d3u540d age=u5e74u9f84، الذي تم تكوينه في Struts-config.xml: <message-resources Parameter="properties.Application_cn"></ موارد الرسالة>. في هذه المرحلة، تم الانتهاء من أكثر من النصف، ثم عليك الكتابة على صفحة JSP. للحصول على تسمية الاسم، تحتاج إلى كتابة <bean:message key=""name""> سيظهر الاسم الصيني على الصفحة، وينطبق الشيء نفسه على العمر، كما تتم معالجة الأحرف الصينية الموجودة على الزر بنفس الطريقة.
(5) الكود المكتوب في قاعدة البيانات مشوه:
الحل: قم بتكوين عامل التصفية، وهو مرشح Servicelet، وهو نفس الكود الموجود في المرة الثانية.
إذا كنت متصلاً مباشرة بقاعدة البيانات من خلال JDBC، فسيكون رمز التكوين كما يلي: jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK، وذلك لضمان عدم تشويه التعليمات البرمجية الموجودة في قاعدة البيانات.
إذا كنت تقوم بالربط من خلال مصدر البيانات، فلا يمكنك كتابته بهذه الطريقة أولاً، يجب عليك كتابته في ملف التكوين. يقع مكان تكوين مصدر البيانات في Tomcat 5.0.19 ضمن C:Tomcat 5.0confCatalinalocalhost المشروع عبارة عن ورشة عمل، والدليل الذي تم وضعه فيه موجود ضمن webapp. ملف التكوين الخاص بـ Workshop.xml هو كما يلي:
<اسم المورد = "jdbc/WorkshopDB"></resource>auth = "حاوية"
اكتب = "javax.sql.DataSource" />
<resourceparams name="jdbc/WorkshopDB"></resourceparams>
<المعلمة></المعلمة>
<الاسم></الاسم>المصنع
<value></value>org.apache.commons.dbcp.BasicDataSourceFactory
<المعلمة></المعلمة>
<الاسم></الاسم>ماكس أكتيف
<القيمة></القيمة>100
<المعلمة></المعلمة>
<name></name>maxIdle
<القيمة></القيمة>30
<المعلمة></المعلمة>
<name></name>maxWait
<القيمة></القيمة>10000
<المعلمة></المعلمة>
<الاسم></الاسم>اسم المستخدم
<القيمة></القيمة>الجذر
<المعلمة></المعلمة>
<الاسم></الاسم>كلمة المرور
<القيمة></القيمة>
<المعلمة></المعلمة>
<الاسم></الاسم>اسم فئة السائق
<القيمة></القيمة>com.mysql.jdbc.Driver
<المعلمة></المعلمة>
<الاسم></الاسم>عنوان URL
<القيمة></القيمة>
انتبه بشكل خاص إلى الأماكن المكتوبة بالخط العريض، فهي تختلف عن الارتباط المباشر بـ JDBC. إذا قمت بتكوينه بشكل صحيح، فسيكون باللغة الصينية في قاعدة البيانات. هناك شيء واحد يجب ملاحظته وهو أنه عند عرض صفحة البيانات يحتاج أيضًا إلى هذا السطر من التعليمات البرمجية. تجدر الإشارة إلى أن بعض موظفي مكتب الاستقبال يستخدمون Dreamver لكتابة التعليمات البرمجية، ويقومون بتغييره إلى jsp الطلب، وتحتاج إلى إرساله، لأن هناك طريقتين لتقديم JSP: POST وGET، لكن الكود المرسل بواسطة هاتين الطريقتين لا يزال مختلفًا تمامًا من حيث التشفير. </bean:message>< /bean:message>