لقد كنت أدرس ترميز UTF-8 خلال الأيام القليلة الماضية وأنا في حيرة من أمري وسأناقش آرائي معك. مرحبا بكم في الموافقة. فيما يلي أفكاري إذا كان هناك أي خطأ، فلا تتردد في تنويرنا ومساعدتي في الإشارة إليه.
الاستطرادات ذات الصلة:
1. نظام التشغيل
نظام النوافذ كله يونيكود داخليا. أسماء المجلدات وأسماء الملفات وما إلى ذلك كلها يونيكود ويمكن عرضها بشكل طبيعي في أي نظام لغة.
2. طريقة الإدخال:
إخراج Microsoft Pinyin هو Unicode، وإخراج Smart ABC هو الصينية المبسطة (لذلك لا يمكن استخدام Smart ABC في الأنظمة غير الصينية المبسطة على الإطلاق، ويمكن الكتابة باللغة الإنجليزية فقط).
3. منطقة نص صفحة الويب
يتم عرض منطقة النص لصفحة الويب بتنسيق Unicode. لذلك سيتم عرض كل ما تكتبه فيه. لكن بعض صناديق الإدخال المصنوعة بالفلاش لن تعمل.
4. الوصول إلى 2000
البيانات المحفوظة في Access هي Unicode ويمكن عرضها بأي نظام لغة.
إذا كانت بعض الأحرف غير طبيعية عند عرضها في عرض البيانات، فذلك لأن الخط المستخدم للعرض ليس خط Unicode.
قم بالتغيير إلى الخط Arial Unicode MS لعرض كل شيء. (الوصول إلى المساعدة، البحث، إدخال Unicode، التعليمات متوفرة)
5. كلمة
التحويل بين الصينية التقليدية والصينية المبسطة في Word بعد التحويل من الصينية المبسطة إلى الصينية التقليدية، لا يزال الكود الداخلي هو اللغة الصينية المبسطة.
6. ASP هو Unicode داخليًا، ويتم تخزين كل النص في Unicode. قم بالتحويل إلى مجموعة الأحرف المحددة عند الضرورة.
أولا دعونا نستنتج:
<%@ codepage=936%>الصينية المبسطة
<%@ codepage=950%>الصينية التقليدية
<%@ codepage=65001%>UTF-8
تحدد صفحة الرموز الترميز الذي يقرأ به IIS السلسلة التي تم تمريرها (إرسال النموذج، إرسال شريط العناوين، وما إلى ذلك).
يحدد أيضًا الترميز الذي سيتم تحويل كافة متغيرات النص إليه من Unicode،
كما أنه يحدد الترميز الذي سيتم تحويل البيانات المستردة من قاعدة البيانات إليه من Unicode. (لاحظ هذا فهو مهم جداً)
الكلمات الرئيسية:
القراءة: سلسلة، إذا تمت قراءتها باللغة الصينية المبسطة فستكون بعض الأحرف، وإذا تمت قراءتها باللغة الصينية التقليدية فستكون بعض الأحرف، ولم يتغير ترميز السلسلة نفسها.
التحويل: يقوم النظام بالتحويل بشكل نشط، على سبيل المثال، من حرف "化" الخاص بـ Unicode إلى حرف "化" الخاص بـ Big5، ويصبح الكود الداخلي هو حرف Big5. إذا لم تكن هناك كلمة مقابلة في Big5، فسيتم الاحتفاظ بنموذج Unicode (&#xxxx;)
الصينية المبسطة: ستة استنتاجات
شكل يونيكود الست عشري: ستة استنتاجات
شكل يونيكود العشري: ستة استنتاجات
فيما يلي عملية تحويل الترميز التي توقعتها:
العميل: طريقة الإدخال Unicode - مربع الإدخال unicode - التحويل من Unicode إلى الترميز المقابل بواسطة مجموعة الأحرف () - ترميز إرسال النموذج
جانب الخادم: يقوم IIS بفك تشفير النموذج - القراءة وفقًا للتشفير المحدد بواسطة صفحة الرموز - التحويل إلى Unicode المطابق - يمكن قراءته باستخدام الطلب ("") - إجراء بعض المعالجة - الحفظ في قاعدة البيانات بتشفير Unicode
جانب الخادم: اقرأ بيانات Unicode من قاعدة البيانات وقم بتحويلها إلى الترميز المحدد بواسطة صفحة التعليمات البرمجية --- إنشاء كود المصدر - يقرأها IE ويعرضها وفقًا لمجموعة الأحرف.
فيما يلي بعض الأمثلة:
مثال 1:
لنفترض أن هناك ثلاث صفحات asp، وهي صفحة رسالة نموذجية:
1.write.asp هو نموذج إدخال بسيط ويتم إرساله إلى add.asp.
<META http-equiv="Content-Type" content="text/html; charset=big5">
2.add.asp يتلقى الرسائل ويحفظها في قاعدة البيانات
<%@ صفحة الرموز=936%>
3.read.asp يحصل على الرسائل من قاعدة البيانات ويعرضها.
<%@ codepage=936%> مجموعة الأحرف=GB2312 أو
<%@ codepage=950%> مجموعة الأحرف=big5
يمكنك التخمين، لقد استخدمت أسلوب إدخال Microsoft Pinyin لإدخال "مناقشة Hua Liu" في ملف write.asp. ما الذي سيتم عرضه في read.asp في النهاية؟
أتشعر بالدوار؟ دعونا نحللها من البداية.
مثال 2:
ماذا سيحدث إذا قمنا بتغيير <%@ codepage=936%> في add.asp في المثال 1 إلى <%@ codepage=950%>؟
ماذا وجدت هنا؟
1. إذا كان نص الإدخال مختلفًا عن مجموعة الأحرف المقابلة، فبمجرد تحويله، قد تظهر الأحرف في نموذج Unicode. هذا هو السبب. يتم الاحتفاظ بالعملية برمتها من الآن فصاعدا.
2. تحدد صفحة التعليمات البرمجية في Add.asp النص المحفوظ في قاعدة البيانات واللغة التي تتوافق مع Unicode. على سبيل المثال، صفحة التعليمات البرمجية = 936.
ثم تحفظ قاعدة البيانات Unicode الصينية المبسطة (تستعيد قاعدة البيانات النظام الصيني المبسط، كل شيء طبيعي)،
Codepage=950 يحفظ Unicode الصيني التقليدي (سيكون من الخطأ استعادة النظام الصيني المبسط).
3. انتبه إلى عملية تغيير السلسلة:
1) طريقة الإدخال --- CharsetUnicode ---- تحدد تعيين مجموعة الأحرف
2) مجموعة الأحرف ---- سلسلة ترميز النموذج ترميز بسيط
3) العملية العكسية للخطوة السابقة لفك تشفير النموذج، يتم تعويض الخطوتين.
4) اضغط على صفحة الشفرة لقراءة السلسلة ولم تتغير السلسلة. قد تتسبب هذه الخطوة في "سوء فهم القراءة".
5) التحويل إلى مجموعة الأحرف المحددة لـ Unicode Codepage ---- تعيين Unicode
6) المعالجة المتوسطة، لا يوجد تغيير في قاعدة البيانات، يتم إدخالها مباشرة في نموذج Unicode
7) اضغط على مخطط الشفرة لقراءة قاعدة بيانات Unicode ---- تعيين مجموعة الأحرف المحددة في صفحة الترميز
8) يوضح أن السلسلة المقروءة من مجموعة الأحرف المحددة بواسطة Charset لم تتغير.
دعونا نوضح مع المثال 1:
مثال 2:
دائِخ. الآن دعونا نستخدم المعرفة.
الحالة 1.
الكود الذي يعمل جيدًا في ظل النظام الصيني المبسط يكون مشوهًا في قاعدة البيانات عند وضعه في مساحة أجنبية، كما تكون البيانات الأصلية مشوهة أيضًا.
التحليل: نظرًا لأن معظم الأشخاص عادةً ما يستخدمون النظام الصيني المبسط، فإن صفحة الرموز الافتراضية = 936، لذلك لا يهم إذا لم يكتبها الجميع.
ولكن عندما نذهب إلى الخارج، تنشأ مشاكل الفضاء. تم تحويل Unicode في قاعدة البيانات إلى ترميز باللغة الإنجليزية، لذلك بعد تحويل اللغة الصينية المبسطة الأصلية في قاعدة البيانات إلى الإنجليزية، سيكون عرض GB مشوهًا بشكل طبيعي.
كما هو موضح في الصورة، يتم عرض النص المدخل حديثًا بشكل طبيعي، ولكن يتم حفظ Unicode الإنجليزي في قاعدة البيانات.
الحل: أضف <%@codepage=936%> إلى الكل.
تتضمن العملية برمتها فقط التحويل بين اللغة الصينية المبسطة ورمز Unicode المقابل.
الحالة 2:
ماذا يجب أن أفعل إذا كنت أرغب في تحويل التعليمات البرمجية والبيانات الصينية المبسطة إلى النسخة الصينية التقليدية الكاملة؟
التحليل: 1. يتم تغيير ترميز جميع ملفات التعليمات البرمجية إلى Big5، ويتم حفظ الملف نفسه باللغة الصينية التقليدية.
2. <%@ صفحة الرموز=936 %>
3.Charset=big5
4. لا يهم إصدار الوصول، لأن البيانات الموجودة في الوصول هي Unicode.
5. حسنًا، يمكن تشغيل الكود وفقًا للنظام الصيني التقليدي الخالص.
6. المشكلات المتبقية: ستكون هناك بعض علامات الاستفهام عند قراءة البيانات الصينية المبسطة الأصلية. التأثير هو نفس قراءة 950 في المثال 1، عرض big5. نظرًا لتحويل Unicode للغة الصينية المبسطة إلى اللغة الصينية التقليدية، فإن بعض الأحرف ليست باللغة الصينية التقليدية، لذلك ستظهر علامات الاستفهام.
7. الحل: استخدم صفحة asp مؤقتة، صفحة التعليمات البرمجية = 65001، واقرأها كـ Unicode الصينية المبسطة، واستخدم وظيفة Unicode->Big5 لتحويلها إلى اللغة الصينية التقليدية، ثم أعد كتابتها مرة أخرى إلى قاعدة البيانات، أليس كذلك؟
الحالتين استنتجتهما نظريا تماما ولم يتم التأكد منهما.
نرحب بالانتقادات والتصحيحات إذا كانت لديك تجارب مماثلة.