جهِّز نفسك لسوالف كاست، واحصل على Macbook Air
ويكيمانيا 2008. الإسكندرية، من 17 وحتى 19 يوليو

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > تطوير الويب
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: May 2007-
#1 (permalink)  
Exclamation Byte Order Mark - BOM


السلام عليكم ورحمة الله وبركاته اخواني ...

بموضوع سابق في قسم تطوير الويب قمت بفتح باب النقاش حول الترميز utf-8 : ايجابياته وسلبياته واعتقد ان الموضوع كان مفيد ولله الحمد وفي النهاية وعدت الاخوة بمقال خاص حول Byte Order Mark - BOM حيث ان اول نشر لهذا المقال كان في موقع المشروع وها هو اليوم بين ايديكم ...

--------------------
تعريف :

Byte order mark هي مجموعة رموز في بداية الملف النصي ووظيفتها اعلام المستخدم بان هذا الملف تابع لمجموعة محارف يونيكود Unicode فاما ان يكون بترميز UTF-8 او UTF-16 او UTF-32 .
هذه المجموعة من الرموز لا تكون ظاهرة بالملف واذا كنا نريد ان نعرف ترميز ملف معين فنستطيع ان تفتح الملف باي محرر HEX وننظر الى بداية ترتيب بيانات قيم HEX في المحرر والرسم التوضيحي التالي يبين ترميز الملف حسب مجموعة الرموز الاولى :



وطبعا إذا لم يكن يحوي تيار البيانات أي من هذه القيم فإن هذا الملف لا يُصنف على أنه من مجموعة الملفات المرمزة بواسطة Unicode .

العلاقة بين BOM و الترميز UTF-8 :

هناك علاقة وطيدة بين الـ Byte order mark والترميز العالمي المشهور UTF-8 فعند استخدامنا لأي محرر تقريبا واردنا حفظ الملف بترميز UTF-8 فان المحرر تلقائيا باضافة هذه الرموز الى بداية الملف والهدف كما اسلفنا ان يتم اعطاء هوية لهذا الملف على انه من مجموعة محارف Unicode والا فانك عندما تفتح الملف من جديد بدون هذه الرموز فان المحرر لن يتعرف على الترميز المناسب لهذا الملف وبالتالي فانه سيعتبر ترميز الملف ANSI او الترميز التلقائي للملفات عند فتحها بواسطة هذا المحرر .

أهمية حذف الـ BOM من الملفات التي بترميز UTF-8 :

انه ومن المهم جدا للمبرمجين ان يقوموا بحذف هذه الرموز من بداية الملف والسبب ان بعض لغات البرمجة مثل لغة php لا تقبل من اي اشارة ان تتقدم على بعض دوالها المهمة مثل دالة الجلسات Session او الدالة Header والابقاء على رموز الـ BOM يعني تعطل الملف واعطاء خطأ برمجي لا يعرف المبرمج سببه في كثير من الاحيان لجهله برموز الـ Byte Order Mark فيأخذ بالبحث في المواقع والمنتديات عن سبب الخطأ ويحاول ان يعرض الكود الذي في داخل الملف على من هم اكثر خبرة منه علهم يعرفون السبب وفي الحقيقة ان الكود خالي من الشوائب والعيوب البرمجية تماما لكن سبب الخطأ البرمجي هو الرموز الاضافية في بداية الملف .

يمكن أن يقول البعض أنه ما من حاجة لاستخدام الترميز UTF-8 في ملفاتنا لأننا نستخدم الترميز ANSI ولا توجد مشكلة، والجواب طبعاً أن هذا الترميز هو الترميز العالمي والأكثر شهرة والأكثر فاعلية لأنه يعمل مع جميع لغات العالم ويعمل في جميع أنظمة التشغيل ولأنه متوافق أيضا مع المعايير القياسية للمواقع W3 .

مشاكل وعقبات عند استعمال الترميز UTF-8 وعلاقتها بالرموز الاضافية BOM وحلولها :

1- انا مبرمج اريد الانتقال من البرمجة بترميز ANSI الى الترميز UTF-8 ولكن المتصفح يظهر خطأ برمجي دائما مع العلم بان الكود سليم وخالي من الشوائب البرمجية .



الجواب : من الواضح انك تستخدم دالة php طلائعية اي انها لا تقبل لاي رمز ان يسقبها في الملف والا تعطل عملها نهائيا وهنا فانك تستعمل الدالتين Session و Header … الحل ان تقوم بتحميل اي محرر يحتوي على خاصية تحرير رموز HEX مثل PSPad وتقوم بحذف القيم الاولى في الملف وهي EF BB EF او ان تقوم بتحميل محلل يحوي خاصية حفظ الملف بدون BOM اي انك عند حفظك للملف فانه سيجعلك تختار ترميز الملف وانت اكيد ستختار الترميز UTF-8 واسفل هذا الخيار هناك مربع اختيار بالنقر عليه سوف يتم حفظ الملف مع الرموز الاضافية BOM وعند سحب علامة الصح من داخله فان الملف سوف يحفظ بدون هذه الرموز وانا ارشح محرر EMeditor او البرنامج الرائع Dreamweaver لهذه المهمة … وبعدها قم بحفظ الملف وان شاء الله لن تعود هذه الأخطاء البرمجية للظهور مجددا .

2- بحمد الله تم التخلص من مشكلة الرموز الاضافية ببداية الملف BOM واشتغل الملف بنجاح لكني عندما اريد ان اعدل على الملف اقوم بفتحه بواسطة المفكرة Notepad لكن لا يظهر لي بان الملف بترميز UTF-8 وانما يظهر على انها صاحب الترميز ANSI او لا يظهر الترميز بالمرة ؟!! اعتقد باني سأعدل عن فكرة البرمجة بواسطة الترميز UTF-8 !!

الجواب : أخي، كل شي بالصبر وحب المعرفة يأتيك على رجليه … برنامج المفكرة Notepad ومع الأسف فانه يعتبر كل ملف لا يحوي الرموز الاضافية BOM يعتبره بترميز ANSI !!! وليس المفكرة فقط وانما برنامج المفكرة ++ (Notepad ++ ) ايضا به نفس المشكلة طيب ما الحل ؟؟ من الافضل اخوي ان تقوم باستعمال محررات محترمة وصديقة للترميز UTF-8 لكي تتخطى هذه المشكلة وانا ارشح هنا برنامج Dreamweaver مرة اخرى لهذه المهمة لان الامور لا تلتبس عليه عند فتح ملف UTF-8 بواسطته وحتى لو كان الملف بدون BOM فأنه سوف يعتبره ملف يونيكود UTF-8 وارشح ايضا برنامج EMeditor لهذه المهمة ايضا .

وفي النهاية اقول لأخواني بان اي شيء تراه مفيد وغير متواجد عربيا وغير مكرر بعالم تطوير المواقع فعليك ثم عليك ان تقوم بنشره ولا تحتكر العلم !!

في إمان الله إخواني في مقالات قادمة .

المراجع:






EbNCaNa متواجد حالياً   قديم 03-01-2008, 11:27 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2007-
#2 (permalink)  

جزاكم الله خيرا
موضوع في غاية الروعة
بس للعلم يعتبر الموضوع بالنسبة لعلمي الضئيل مقارنة بعلمك متقدم بعض الشئ
ولكني احتفظت به في مفضلتي
حتي اذا ما وصلت الي مرتبة جيدة مثلك ان شاء الله
اقوم بمراجعتها ودراستها
يعني حتاخد الثواب يعني حتاخده
ان شاء الله
وربنا يكرمك






__________________
... ... ... ... ... ... ... ... ... ... ... ... ... ...
لا طعم للانترنت .. بدون متصفح maxthon
www.maxthon.com
... ... ... ... ... ... ... ... ... ... ... ... ... ...
سحاب اون لاين غير متواجد حالياً   قديم 04-01-2008, 04:38 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#3 (permalink)  

حياك الله اخوي سحاب على ردك المشجع وان شاء الله لن ابخل بأي شي قد تعلمته فانا وانت وجميعنا اخوة لنا نفس العقول ولكن الاختلاف في التجربة ...

الى الامام حبيبي .






EbNCaNa متواجد حالياً   قديم 04-01-2008, 12:47 PM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
مشكلة عند حذف الـ BOM من ملف بترميز utf-8 EbNCaNa ويب 2.0 و البرمجية القياسية Ajax +XML+ CSS+ JavaScript وغيرها 4 13-12-2007 11:13 PM
بفلوسي وبعد شركة vbulletin مارضوا يعطوني تصريح التاجر إصلاح وصيانة المنتديات 12 08-11-2004 07:47 PM
يا خسارة الاسلام فينا .. 169 دولار مسروقة استرجعها 2chekout alnassaj خدمات البيع والشراء والإعلانات التجارية 10 29-08-2004 12:37 PM
من يقدر عليها ؟ سؤال حول ORDER BY يحتاج الى خبير hamudi تطوير الويب 4 30-01-2004 06:06 PM


الساعة الآن: 06:15 PM بتوقيت المملكة العربية السعودية