فيما يلي 4 حلول مختلفة للأحرف المشوشة، والتي تغطي بشكل أساسي المواقف المختلفة التي تظهر فيها الأحرف المشوهة في تطوير الويب.
يتم اقتراح حل التعليمات البرمجية المشوشة بشكل أساسي لبيئة تطوير Java + MySQL وطالما تم إجراء التعديلات المقابلة، يمكن استخدامه لحل مشكلة التعليمات البرمجية المشوهة في بيئات لغوية مختلفة.
1. تعرض صفحة JSP أحرفًا مشوهة
تظهر صفحة العرض التالية (display.jsp) مشوهة:
رمز البرنامج
<أتش تي أم أل>
<الرأس>
<title>المعالجة الصينية لـ JSP</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</الرأس>
<الجسم>
<%
out.print("معالجة JSP الصينية");
%>
</الجسم>
</html>
بالنسبة لخوادم الويب المختلفة وإصدارات JDK المختلفة، تختلف نتائج المعالجة. السبب: تختلف طريقة التشفير التي يستخدمها الخادم ويعرض المتصفح نتائج مختلفة لأحرف مختلفة. الحل: حدد طريقة التشفير (gb2312) في صفحة JSP، أي أضف: <%@ page contentType="text/html; charset=gb2312"%> إلى السطر الأول من الصفحة لإزالة الأحرف المشوهة. الصفحة الكاملة هي كما يلي:
<%@ page contentType="text/html; charset=gb2312"%>
<أتش تي أم أل>
<الرأس>
<title>المعالجة الصينية لـ JSP</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</الرأس>
<الجسم>
<%
out.print("معالجة JSP الصينية");
%>
</الجسم>
</html>
2. تظهر الأحرف المشوهة عندما يتم إرسال النموذج باللغة الصينية. يوجد أدناه صفحة إرسال (submit.jsp) تحتوي على الكود التالي:
رمز البرنامج
<أتش تي أم أل>
<الرأس>
<title>المعالجة الصينية لـ JSP</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</الرأس>
<الجسم>
<اسم النموذج = "form1" طريقة = "post" action = "process.jsp">
<div محاذاة = "المركز">
<نوع الإدخال = "نص" اسم = "اسم">
<نوع الإدخال = "إرسال" الاسم = "إرسال" القيمة = "إرسال">
</div>
</النموذج>
</الجسم>
</html>
ما يلي هو رمز صفحة المعالجة (process.jsp):
رمز البرنامج
<%@ page contentType="text/html; charset=gb2312"%>
<أتش تي أم أل>
<الرأس>
<title>المعالجة الصينية لـ JSP</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</الرأس>
<الجسم>
<%=request.getParameter("name")%>
</الجسم>
</html>
إذا كان من الممكن عرض الأحرف الإنجليزية المقدمة في Submit.jsp بشكل صحيح، وإذا تم إرسال الأحرف الصينية، فستظهر الأحرف المشوهة. السبب: يستخدم المتصفح ترميز UTF-8 بشكل افتراضي لإرسال الطلبات، وتمثل طرق التشفير UTF-8 وGB2312 الأحرف بشكل مختلف، لذلك لا يمكن التعرف على الأحرف. الحل: قم بتشفير الطلب بشكل موحد من خلال request.seCharacterEncoding("gb2312") لتحقيق العرض العادي للغة الصينية. رمز Process.jsp المعدل هو كما يلي:
رمز البرنامج
<%@ page contentType="text/html; charset=gb2312"%>
<%
request.seCharacterEncoding("gb2312");
%>
<أتش تي أم أل>
<الرأس>
<title>المعالجة الصينية لـ JSP</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</الرأس>
<الجسم>
<%=request.getParameter("name")%>
</الجسم>
</html>
3. اتصال قاعدة البيانات مشوه.
طالما أن كل ما يتعلق باللغة الصينية مشوه، فإن الحل هو إضافة useUnicode=true&characterEncoding=GBK إلى عنوان URL لقاعدة البيانات وسيكون الأمر على ما يرام.
4. عرض قاعدة البيانات مشوه
في mysql4.1.0، ستظهر الأحرف الصينية المشوهة في نوع varchar ونوع النص، بالنسبة لنوع varchar، فإن تعيينه كسمة ثنائية يمكن أن يحل المشكلة الصينية بالنسبة لنوع النص، يجب استخدام فئة تحويل التشفير للتعامل معه التنفيذ كالتالي :
كود البرنامج
تحويل الطبقة العامة {
/** تحويل كود ISO-8859-1 إلى GB2312
*/
سلسلة ISOtoGB العامة الثابتة (سلسلة iso) {
سلسلة غيغابايت؛
يحاول{
إذا (iso.equals("") || iso == null){
يعود ""؛
}
آخر{
iso = iso.trim();
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
العودة غيغابايت.
}
}
قبض (استثناء ه) {
System.err.print("خطأ في تحويل الترميز:"+e.getMessage());
يعود ""؛
}
}
}
قم بتجميعه في فئة، ويمكنك استدعاء الطريقة الثابتة ISOtoGB() لفئة التحويل لتحويل الترميز.