في الآونة الأخيرة ، الشركة لديها مشروع ياباني. نظرًا لأنه كان يستخدم لاستخدام CMS الصيني الذي تم تطويره بمفرده ولم يفصل حزم اللغة ، فقد واجهت مشكلة مشوهة مثيرة للصداع أثناء عملية بناء وتصحيح الأخطاء.
سبب رمز مشوه
نظرًا لأن مساحة التخزين لكل تشفير أحرف مختلفة ، عند استخدام أحرف مختلفة لقراءة البيانات ، عندما تكون مساحة الأحرف صغيرة جدًا ، لا يمكن عرضها بشكل طبيعي.
على سبيل المثال ، مجموعة أحرف الأحرف الصينية هي عمومًا GB2312. إذا كنت تستخدم UTF-8 لإجبار القراءة وتغيير أحرف GB2312 ، فقد يكون هناك رمز مشتعلة. نظرًا لأن مساحة تخزين مجموعة أحرف UTF-8 أكبر من GB2312 ، عند القراءة باستخدام UTF-8 ، فإن بعض الأحرف GB2312 غير موجودة في الترميز ، وستظهر الشخصيات غير الموجودة بشكل طبيعي. بالنسبة للملفات الثابتة ، إذا كان ترميز التخزين للملف غير متوافق مع إعدادات الترميز (charset) في صفحة الويب ، فسيحدث رمز مشوهة بسبب الأسباب المذكورة أعلاه.
ما سبق هو تحليل بسيط للمشكلة المشوهة ، والذي يتضمن دعم ASP للتدويل عند حل المشكلات الحالية.
ثلاث وظائف متورطة: codepage ، استجابة.
فيما يلي ممر من MSDN.
sett@codepageExplicieAffectsLiterAtsInasingLerSponse.response.codepageaffectsdynamicsTringSinasingLerSponse ، و Session.CodePageaffectDynamicStringSinasingleresponse.
يمكن لجميع الوظائف الثلاث تعيين ترميز ASP ، حيث يكون CodePage يعادل الرأس في PHP ويجب إصداره في بداية المستند.
في IIS لنظام التشغيل الصيني ، يكون الافتراضي هو GB2312 ، وقيمة المعلمة هي: "936" ، ويجب تحديد المستند الياباني codepage:
<٪@codepage = 932 ٪>
نستخدم هذه الوظيفة لتعيين ترميز المستند لطريقة الاستخدام المحددة: http://www.cloudward.net/techlife/article.asp؟id=490
لا ينبغي أن تكون هناك مشكلة الآن ، أليس كذلك؟ واو ، لا تزال المشكلة موجودة. بالنظر إلى أن جميع برامج ASP لشركة SEO تحتاج إلى إنشاء صفحات ثابتة. الصفحات التي تم إنشاؤها هي جميع ANSI الافتراضية لـ Windows ، ولا يزال لديها رموز مشوهة تحتوي على أحرف يابانية. وبهذه الطريقة ، نحتاج إلى وظيفة ASP لإنشاء ملفات UTF-8 أو ملفات ترميز اليابانية. نستخدم الكود التالي لإكماله:
setObjStream = server.createBject ("Adodb.stream")
بدون BJStream
.يفتح
.charset = "UTF-8" // الترميز ، هنا يمكنك تغييره إلى أي ترميز
.position = objstream.size
.writetext = pencat // pencat هي البيانات المكتوبة
.savetofilesserver.mappath ("patch/flilename.html") ، 2 // إنشاء مسار الملف
.يغلق
endwith
setObjStream = لا شيء
تم حل مشكلة الكود المشوهة بعد الاختبار.