سؤال

لديّ بعض الشخصيات الصينية التي أحاول عرضها على موقع الويب الذي يعمل به Kentico. يتم لصق هذا النص/لصقه في محرر Kenticos FCK ، ثم يتم حفظه ويظهر على الموقع. في Firefox و Chrome و Safari ، تظهر الشخصيات تمامًا كما هو متوقع. في وضع المعايير IE 8 ، أرى فقط الصناديق.

يتم ترميز النص UTF-8 ، وبقدر ما أستطيع أن أقول ، يتم ترميزه بشكل صحيح في الاستجابة من الخادم. هناك Content-Type: text/html; charset=utf-8 رأس الاستجابة ، و <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> علامة التعريف على الصفحة أيضًا. عندما أقوم بتنزيل HTML من الخادم ومقارنة بايت الشخصيات المعنية بمستند النص الأصلي UTF-8 ، فإن جميع البايتات تتطابق ، باستثناء HTML لا تتضمن BOM.

يبدو أن هذا خاص بـ IE 8 في وضع المعايير. في IE 8 قريرك: إنه يعمل. أي 7 معايير: إنه يعمل. أي 7 المراوغات: الأعمال. لست متأكدًا من كيفية تسبب وضع المعايير في هذه المشكلة.

من الغريب ، إذا كنت عرض المصدر من IE ، فإن الشخصيات تظهر في عرض المصدر بشكل صحيح.

أي اقتراحات حول ما قد يكون خطأ هنا؟ هل أفتقد شيئًا واضحًا؟

هل كانت مفيدة؟

المحلول

لا أستطيع أن أشرح هذا بالتفصيل. ولكن هذه بالفعل مشكلة معروفة.

إليك مقتطف رمز صغير قابلة للتكرار:

<!DOCTYPE html>
<html lang="en">
    <head><title>test</title></head>
    <body><p>&#65185;<br>0 0</p></body>
</html>

احفظه في UTF-8 وعرض في IE8. لا ترى شيئا. يحل محل 0 0 بواسطة 00 وإعادة تحميل الصفحة. سوف تعمل بشكل جيد! هذا مذهل للغاية. بغرابة ، استبدال 0 0 بواسطة a a أو ال <br> بواسطة </p><p> سوف إصلاحه كذلك. سيكون له علاقة مع الإخفاقات في عرض المساحة البيضاء.

عذرًا ، ليس لدي موارد رسمية تثبت ذلك ، لكن هذا مجرد دليل آخر على أن IE8 ليس جيدًا كما نتوقع. أفضل رهان لك هو محاولة تغيير HTML و/أو إنشاءه خطوة بخطوة بحيث يعمل في مرحلة ما أو عندما دون جدوى ، أضف علامة التعريف التالية إلى الرأس لإجبار IE8 إلى وضع IE7:

<meta http-equiv="X-UA-Compatible" content="IE=7" />

نصائح أخرى

الترميز الافتراضي IE هو أوروبا الغربية (ISO) ، لذلك تحتاج إلى تغييره يدويًا إلى UTF-8 أو تطبيق IE لاستخدام ترميز معين مثل هذا:

  • HTML 4.01

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

  • HTML 5

    <meta charset="UTF-8">

وأنت بحاجة أيضًا إلى استخدامها lang ميزة في <html> علامة لإعلان اللغة

    <html lang="zh">

للصينية

مجرد تخمين متوحش ، لكنه قد يكون مشكلة الخط. ربما يمكن للخطوط المتاحة لمتصفحك أن تمثل الشخصيات الصينية المذكورة.

تمكنت من إصلاح نفس المشكلة عن طريق تغيير تنسيق UTF للملف إلى "UTF8 مع علامة ترتيب البايت".

(المحرر الذي أستخدمه يتيح لي تبديل تنسيقات الملفات بسهولة ، لست متأكدًا من كيفية المتابعة بطريقة أخرى ، ولكن يستحق إلقاء نظرة على تنسيقات ملف UTF المختلفة ، أي (8) ببساطة لا يحب UTF8 بدون علامات ترتيب البايت ...)

تمكنت أيضًا من إعادة إنتاج المقتطف من الإجابة أعلاه ؛

<!DOCTYPE html>
<html lang="en">
    <head><title>test</title></head>
    <body><p>&#65185;<br>0 0</p></body>
</html>

لكن نتائجي كانت "متقطعة" بينما في UTF وبدون بوم (في بعض الأحيان ستظهر لهجات ، في بعض الأحيان في أوقات أخرى ، لم يكن الأمر وكأنه مشكلة في تقديم المساحة البيضاء ...) لاحظ أنني كنت أتعامل معها Lang = "FR" و Lang = "ES" ، ولكن في جميع الحالات ، يبدو أن تغيير تنسيق ملف UTF قد حل بشكل دائم مشكلات عرض لهجاتي. قون

أنا لست على دراية بنسبة 100 ٪ بـ UTF ، ولكن إذا تم ترميز chars باستخدام وحدات البايت ، فيجب على المرء أن يفترض أن مشكلات الفضاء الأبيض وسوء فهمها يمكن أن تكون مرتبطة ببايت غير محاذاة في المصادر.

قد يكون هذا هو نفس الشيء الذي تسبب في إضافة Rails 3 لإضافة شخصية ثلج إلى إنتاجها: ما هو _snowman param في Ruby on Rails 3 أشكال؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top