الأربعاء ١٤ آذار (مارس) ٢٠٠٧
بقلم جورج قندلفت

بريد هوتميل وحروف يونيكود: الرفقة المستحيلة

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

من جهة اخرى، فإن مقياس HTML 4.0، وهو احدث مقياس للنسيج صدر في التسعينات من القرن الماضي، يشترط بوضوح والحاح على اي برنامج تصفح ان يتمكن من فهم الصفحات المنسقة بترميز ASCII (وهو الابجدية اللاتينية التي لا تشمل حروف تحتوي على علامات صوتية مثل é) وترميز لاتيني ١ (اي الابجدية اللاتينية ومعظم الحروف ذات العلامات الصوتية المستخدمة في لغات أوروبا الغربية) وUTF-8.

هذا كله جميل، ولكن هناك مشكلة: مايكروسوفت!
وبالتحديد هوتميل، بريد النسيج من مايكروسوفت!
وبالتحديد الدقيق، نطاق hotmail.com لأن الاصدارات الاخرى من هوتميل مثل hotmail.co.uk او hotmail.fr تتلطف وتعرض ترميز يونيكود اذا حددناه من المتصفح (وليس تلقائياً).

ما هي المشكلة؟ يقوم hotmail.com بعرض النصوص بترميزها الاصلي ولكنه لا يوضح للمتصفح ما هو هذا الترميز. وفي غياب هذا التوضيح، تقوم برامج التصفح، ووفقاً لمقياس HTML 4.0، بعرض الصفحة بترميز لاتيني 1 الذي يشكل الترميز الافتراضي. واذا كانت الرسالة مرمزة بأطقم يونيكود، نحصل على خليط من الاحرف غير المفهومة. هنا يدخل الفرق بين hotmail.com والاصدارات الاخرى: فالاول يصر على عرض الخلطة المبهمة من الحروف مهما فعلنا بينما الاصدارات الاخرى تتنازل وتعرض الحروف بالشكل الصحيح حين نختار UTF-8 من قائمة ترميز الصفحات في برنامج التصفح.

في المطلق يتحتم على hotmail.com ان يتمكن من تحويل الصفحات من اللاتيني ١ قبل ارسالها الى برنامج التصفح. وليس هذه بمهمة مستحيلة وليست صعبة للبرمجة وبالتأكيد تعرف مايكروسوفت كيف تنفذها والدليل على ذلك دعم هذا التحويل في اصدارات هوتميل الاخرى.

لكن يبدو ان مهندسي hotmail.com يعتقدون ان هذا البريد مخصص للناطقين بالاميركية فقط وليس من المفترض فيهم تلقي رسائل بلغة غير الاميركية. هذا تحليل غبي ولكنه منطقي اذا صدر عن مجتمع يعتقد نفسه مركز العالم.

رغم غباوة هذا التصرف، يتحتم علينا إيجاد حل لهذه المشكلة. فيحتل هوتميل حوالي ٣٠ ٪ من سوق البريد الالكتروني المعتمد على النسيج (الباقي يتوزع بين ياهو وغوغل ومجموعة من اللاعبين الصغار) وبالتالي لا يمكن تجاهله.

وبما اننا لا نستطيع تجاهله، علينا بالقفز فوق غباوة مهندسي مايكروسوفت.

قد يكون الحل الابسط ترميز كل الحروف التي تتخطى نطاق ASCII (اي فوق ١٢٨ حرف) باستخدام كائنات رقمية (من نوع & #1575;). ويمكن للغة php التحكم بهذا الترميز بسهولة كبيرة حتى لو تسببت هذه الخطوة الاضافية بزيادة الحمل على معالج سكريبت ارسال البريد.

ولكن هذا الحل يفترض ان مهندسي مايكروسوفت اذكى مما هم في الواقع: فيمكن بسهولة ملاحظة ان hotmail.com لا يكتفي بارسال صفحات دون اي نوع من الترميز (وهذا بحد ذاته خطأ HTML فادح) بل يذهب الى حد اعادة الكائنات الرقمية الى ترميزها الاصلي. بمعنى آخر، اذا كانت رسالة البريد تحتوي على اشارة الى ترميز UTF-8، يقوم hotmail.com بنسخ هذه الكائنات الرقمية بترميز UTF-8 ولكنه يرسلها ايضاً دون اشارة الى الترميز الى برنامج التصفح الذي يعتقد انها بترميز لاتيني ١!

الحل الوحيد اذاً هو ادخال النص في الرسالة بالكائنات الرقمية وادخال اشارة بأن الترميز هو لاتيني ١. بهذه الطريقة، يقوم hotmail.com بإعادة ترميز الكائنات الرقمية التي يأتي ترتيبها تحت الرقم 256 [1] بالترميز اللاتيني ١ ويترك الكائنات الاخرى كما هي.

بالطبع الحل الامثل هو اقناع مستخدمي هوتميل بالانتقال الى خدمة بريد اخرى يمكنها التعامل مع ترميز utf-8 دون مشاكل.


[1يحتوي ترميز لاتيني ١ على ٢٥٦ حرف. بالتالي كل الحروف التي يقع ترتيبها فوق الرقم 256 تنتمي الى ترميز آخر.


أي رسالة أو تعليق؟

مراقبة استباقية

هذا المنتدى مراقب استباقياً: لن تظهر مشاركتك إلا بعد التصديق عليها من قبل أحد المدراء.

من أنت؟
مشاركتك

لإنشاء فقرات يكفي ترك سطور فارغة.

الأعلى