هناك عميل يريد إنشاء نسخة روسية من موقعه على الويب، وأنا أستخدم ترميز UTF-8 للواجهة الأمامية والخلفية، لكن المعلومات الروسية الثابتة التي يتم إنشاؤها من خلال قاعدة البيانات مشوهة. إذا تم عرضها باستخدام GB2312، فسيتم عرض المعلومات الروسية الثابتة التي تم إنشاؤها من خلال قاعدة البيانات بشكل صحيح، ولكن النص الروسي في ملف القالب مشوه.
الخصائص المحددة هي كما يلي:
1. تحقيق اللغة الروسية العادية من خلال القوالب.
2. يتم عرض المعلومات الروسية الثابتة التي تم إنشاؤها من خلال قاعدة بيانات الواجهة الخلفية بشكل طبيعي في الواجهة الخلفية ولكنها مشوهة في الواجهة الأمامية.
3. اللغة الإنجليزية عادية.
تعبيرات متشابهة أو مختلفة تتعلق بالموضوع
يكتب FSO الملفات المشفرة UTF-8
كيف يمكن لـ FSO إنشاء ملفات مشفرة بـ utf-8؟
ما هو تنسيق الترميز الافتراضي للملفات التي تم إنشاؤها بواسطة FSO؟
كيفية التحويل إلى ترميز UTF-8
مشكلة في إنشاء FSO لصفحات الويب الثابتة
رمز استخدام FSO لإنشاء الملفات في ASP هو كما يلي:
انسخ رمز الكود كما يلي:
وظيفة createfile (اسم الملف، المحتوى)
تعيين fso=server.CreateObject("scripting.filesystemobject")
تعيين f1=fso.opentextfile(sfilename,2,true,-1)
f1.اكتب (المحتوى)
f1.إغلاق
تعيين fso=لا شيء
وظيفة النهاية
fso.opentextfile(sfilename,2,true,-1) تحدد المعلمة الأخيرة -1 تنسيق التشفير على أنه Unicode. عندما يكون تنسيق التشفير هو Unicode، تعرض صفحة الويب UTF-16 ذات النهاية الصغيرة.
طريقة OpenTextFile
ينشئ الملف المحدد ويعيد كائن TextStream، والذي يمكن استخدامه لقراءة الملف الذي تم إنشاؤه أو كتابته.
object.OpenTextFile (اسم الملف [، iomode [، إنشاء [، التنسيق]]])
كائن المعلمة، مطلوب. يجب أن يكون اسم كائن FileSystemObjec أو Folder. هذا هو FSO.
اسم الملف، مطلوب. تعبير سلسلة يحدد الملف المراد إنشاؤه. هنا اسم الملف.
تشير المعلمة iomode الاختيارية إلى ما إذا كان الملف يُستخدم للقراءة أو الكتابة أو الإلحاق. القيمة الافتراضية هي 1 للقراءة و2 للكتابة و8 للإلحاق.
إنشاء، معلمة اختيارية، ما إذا كنت تريد إنشاء الملف إذا لم يكن موجودًا، فالافتراضي هو خطأ، إذا كنت ترغب في إنشائه، فاضبطه على صحيح.
التنسيق، يمكن أن تكون المعلمة أحد الإعدادات التالية، والإعداد الافتراضي هو تنسيق ASCII، ولا يوجد utf-8 نريده:
يقوم TristateUseDefault -2 بفتح الملف بالتنسيق الافتراضي للنظام.
TristateTrue -1 يفتح الملف بتنسيق Unicode.
TristateFalse 0 افتح الملف بتنسيق ASCII.
هناك ثلاث سمات ترميز فقط لـ FSO. الإعدادات الافتراضية للنظام هي Unicode وASCII، ولا نريد utf-8، لذلك، تكون الملفات التي يتم إنشاؤها باستخدام مكونات FSO على الأنظمة الصينية بشكل عام بتنسيق ترميز gb2312.
الحل الأول
يحتوي ترميز GB2312 على أحرف روسية، إذا تم تعيين الصفحة على GB2312 الصينية المبسطة، فيمكن عرض اللغة الروسية بشكل طبيعي، ومع ذلك، نظرًا لأن الإعدادات الافتراضية للصينية هي عرض "Song Ti"، فسيتم عرض اللغة الروسية كأحرف كاملة العرض في "Song Ti". وهو أمر قبيح، لذلك يجب استخدام الخطوط الأجنبية، مثل "New Rome" أو "Arial" وما إلى ذلك. يمكن للعملاء الصينيين التواصل هناك، لكن عندما يتصفح الروس الحقيقيون الويب، فإنهم يحتاجون إلى تنزيل اللغة الصينية وتثبيتها، وهو أمر غير مثالي وقد يؤدي إلى التخلي عن تصفح الويب.
الحل 2
ونظرًا لأن ASP لغة قديمة، فإن بعض ميزاتها لا تتمتع بدعم جيد جدًا لـ UTF-8. لا يدعم FSO إنشاء ملفات بتنسيق UTF-8 مباشرةً لأنه لا يمكنه تحديد تنسيق الملف المطلوب. على سبيل المثال، إذا كنت تريد إنشاء ملف بتنسيق UTF-8، فلا يمكنك استخدام كائن Scripting.FileSystemObject شائع الاستخدام. يجب علينا تغيير تفكيرنا واستخدام Adodb.Stream. هذه هي الطريقة التي يتم بها تنفيذ بعض برامج المدونات الحالية، مثل zblog.
وظيفة كائن Scripting.FileSystemObject لإنشاء الملفات هي كما يلي:
FileSystemObject.CreateTextFile (اسم الملف [، الكتابة فوق [، unicode]])
يتم وصف سمة Unicode على النحو التالي:
خياري. قيمة منطقية تشير إلى ما إذا كان سيتم إنشاء الملف بتنسيق ملف Unicode أو ASCII. تكون هذه القيمة صحيحة إذا تم إنشاء الملف بتنسيق ملف Unicode؛ وتكون False إذا تم إنشاء الملف بتنسيق ملف ASCII. إذا تم حذف هذا القسم، فمن المفترض أن يتم إنشاء ملف ASCII.
لسوء الحظ، لا يمكنك استخدام هذه الوظيفة لإنشاء ملفات بتنسيق UTF-8.
استخدم كائن ADODB.Stream، انظر أدناه للاستخدام:
انسخ رمز الكود كما يلي:
تعيين objStream = Server.CreateObject("ADODB.Stream")
مع أوبجستريم
.يفتح
مجموعة الأحرف = "utf-8"
.Position = objStream.Size
.WriteText=str
.SaveToFile server.mappath("/sitemap.xml"),2
.يغلق
نهاية مع
تعيين objStream = لا شيء
الملحق: مقدمة إلى ASCII وUnicode وUTF-8
ASCII عبارة عن مجموعة أحرف تتضمن أحرفًا إنجليزية كبيرة وصغيرة وأرقامًا وأحرف تحكم وما إلى ذلك. ويتم تمثيلها ببايت واحد وتتراوح من 0 إلى 127.
نظرًا لأن الأحرف التي يمثلها ASCII محدودة جدًا، فقد اقترحت كل دولة أو منطقة مجموعة أحرف خاصة بها بناءً على ذلك، على سبيل المثال، يوفر GB2312، والذي يستخدم على نطاق واسع في الصين، ترميزًا للأحرف الصينية ويتم تمثيله ببايتين.
مجموعات الأحرف هذه غير متوافقة مع بعضها البعض، وقد تمثل نفس الأرقام أحرفًا مختلفة، مما يسبب مشكلة في تبادل المعلومات.
Unicode عبارة عن مجموعة أحرف تقوم بتعيين جميع الأحرف في العالم إلى رقم فريد (نقطة رمز)، مثل الرقم 0x0041 المطابق للحرف a. لا يزال Unicode قيد التطوير، ويحتوي على المزيد والمزيد من الأحرف.
عند تخزين الأحرف الممثلة بواسطة Unicode، يلزم استخدام طريقة تشفير معينة، مثل UCS-2، الذي يستخدم بايتين لتمثيل الأحرف المشفرة بواسطة Unicode. UTF-8 هي طريقة ترميز أخرى لمجموعة أحرف Unicode، وهي ذات طول متغير، يصل إلى 6 بايت، ويتم تمثيل الأحرف الأقل من 127 ببايت واحد، ولها نفس نتيجة مجموعة أحرف ASCII، لذا فهي تحتوي على عدد كبير جدًا من الأحرف توافق جيد، يمكن معالجة النص الإنجليزي بترميز ASCII بترميز UTF-8 دون تعديل، ويستخدم على نطاق واسع.