هل لا تزال الكيانات المسماة في HTML ضرورية في عصر المتصفحات المدركة لـ Unicode؟

StackOverflow https://stackoverflow.com/questions/25132

سؤال

لقد قمت بالكثير من برمجة PHP في السنوات الأخيرة والشيء الوحيد الذي يزعجني باستمرار هو الدعم الضعيف لـ Unicode والسلاسل متعددة البايت (من المؤكد أنه لا يوجد شيء أصلاً).على سبيل المثال، يبدو أن "htmlentities" هي وظيفة مستخدمة كثيرًا في عالم PHP ووجدتها مزعجة تمامًا عندما تبذل جهدًا للحفاظ على كل سلسلة قابلة للترجمة، وتخزن فقط UTF-8 في قاعدة البيانات الخاصة بك، وتقدم فقط UTF -8 صفحات ويب وما إلى ذلك.فجأة، في مكان ما بين قاعدة بياناتك والمتصفح، توجد هذه الوظيفة الساذجة التي تتظاهر بأن كل بايت هو عبارة عن حرف ويفسد كل شيء.

أود فقط حب مجرد التخلص من هذا النوع من الوظائف، يبدو أنها غير ضرورية على الإطلاق. هل ما زال من الضروري هذه الأيام كتابة "ä" بدلاً من "ä"؟ على الأقل يبدو متصفح Firefox الخاص بي سعيدًا تمامًا بعرض حتى أغرب الحروف الرسومية الآسيوية طالما يتم تقديمها بترميز مناسب.

تحديث: كي تكون اكثر دقة:هل تم تسمية الكيانات اللازمة ل أي شيء آخر غير عرض علامات HTML (كما في "<" لـ "<")

التحديث 2:

@ كونراد:هل تقول ذلك، لا، ليست هناك حاجة للكيانات المسماة؟

@ روس:ولكن أليس من الأفضل تطهير مدخلات المستخدم عند إدخالها، للحفاظ على منطق الإخراج الخاص بي خاليًا من مثل هذه المشكلات؟(على افتراض بالطبع أن التعقيم الموثوق به للمدخلات أمر ممكن - ولكن إذا لم يكن الأمر كذلك، فهل يمكن أن يكون على المخرجات؟)

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

المحلول

الكيانات المسماة في XHTML "الحقيقي" (أيمع application/xhtml+xml, ، بدلاً من الأكثر استخدامًا text/html وضع التوافق) غير محبذ.وبصرف النظر عن الخمسة المحددة في XML نفسها (&lt;, &gt;, &amp;, &quot;, &apos;)، فيجب تعريفها جميعًا في DTD الخاص بـ DocType المعين الذي تستخدمه.وهذا يعني أن متصفحك يجب أن يدعم بشكل صريح DocType، وهو أمر بعيد عن كونه أمرًا معطى.من ناحية أخرى، من الواضح أن الكيانات المرقمة تتطلب فقط جدول بحث للحصول على حرف Unicode الصحيح.

أما فيما يتعلق بما إذا كنت بحاجة إلى كيانات طوال هذه الأيام:يمكنك أن تتوقع إلى حد كبير أن يدعم أي متصفح حديث UTF-8.لذلك، طالما يمكنك ضمان موافقة قاعدة البيانات والترميز وخادم الويب على خدمة ذلك، تخلص من الكيانات.

نصائح أخرى

إذا كنت تستخدم XHTML، فمن المستحسن عدم استخدام الكيانات المسماة ([بحاجة لمصدر]).بعض المتصفحات (Firefox...)، عند تحليل هذا كـ XML (وهو ما لا تفعله عادةً)، لا تقرأ ملفات DTD وبالتالي لا تتمكن من التعامل مع الكيانات.

نظرًا لأنه من أفضل الممارسات على أي حال استخدام UTF-8 للتشفير إذا لم تكن هناك أسباب مقنعة للقيام بخلاف ذلك، فهذا يعني فقط أن منشئ المستندات يحتاج إلى محرر لائق لا يمكنه التعامل مع المستندات فحسب، بل يوفر أيضًا طريقة جيدة للدخول الحروف الرسومية الغواصين.لا يواجه OS X هذه المشكلة حقًا لأنه يمكن الوصول إلى معظم الحروف الرسومية المطلوبة عبر مفاتيح "alt" ولكن Windows لا يحتوي على هذه الميزة.


@ كونراد:هل تقول ذلك، لا، ليست هناك حاجة للكيانات المسماة؟

بدقة.ما لم تكن هناك بالطبع قيود سخيفة، على سبيل المثال.برامج تشغيل قاعدة البيانات القديمة التي تخنق UTF-8 وما إلى ذلك.

يبدو أن Safari يواجه مشكلات مع بعض الحروف الرسومية دون غيرها، وقد لا يكون الأمر كذلك ضروري ولكن ربما يكون من الأفضل القيام بذلك، بالطبع، هذا رأيي ولا يدعمه أي شيء سوى ملاحظاتي الخاصة.

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