السلام عليكم
هناك موضوع قد يؤرق الكثير من الاخوة المبرمجين اثناء دخولهم عالم الاجاكس AJAX .. وهو مشكلة عدم عرض اللغة العربية بالشكل المظبوط ( حيث تظهر رموز وارقام ) عند طلب بيانات عن طريق الاجاكس او ارسال بيانات ايضا ...
اكيد الكل يعرف ان المشكلة هى فى نوع التشفير ... ويجب ظبطه على windows-1256
لكن المطلوب فهمه هو ان هذه المشكلة ليست من ناحية العميل ... بل من ناحية السيرفر ؟
كيف ؟
اعطى لك مثال ... حينما تدخل فى ترويسة الصفحة ( وسم ال HEAD ) الكود الذى يعرف تشفير الصفحة على انه windows-1256
هذا الكود يعمل من ناحية الزائر فقط ... أى انه يخبر المتصفح الذى يستخدمه الزائر " انتبه! تشفير البيانات القادم اليك هو windows-1256 ... اعرضه بالطريقة المظبوطة..."كود:<meta http-equiv="Content-Type" content="text/html; charset=windows-1256 " />
نفس الفكرة عند استخدام دالة ال header() فى اكواد ال php
هذا الكود تقريبا هو نفس عمل وسم ال HEAD فى صفحات ال htmlكود:header('Content-Type: text/html; charset=windows-1256');
طيب اذا ما الذى نقصده بأن حل المسألة على السيرفر ؟ ولماذا تعمل الاجاكس من جانب السيرفر؟
فى الاكواد السابقة ... الفكرة هى ان تخبر المتصفح ما هو التشفير المظبوط ( windows-1256 ) الذى تستخدمه البيانات القادمة اليك .. وهذا بالطبع يفترض ان البيانات القادمة هى بتشفير windows-1256
لكن ماذا اذا كانت البيانات المرسلة الى المتصفح ليست windows-1256 ؟؟؟ بالطبع مهما اخبرت المتصفح ان نوع التشفير هو العربية ... لن يستطيع عرضه !
وهذه هى المشكلة ... فعند استخدام الاجاكس .. تقوم دالة الجافا سكربت بطلب البيانات بالتشفير الافتراضى للسيرفر ... وهذا ما يجب علينا تعديله
المهم حل المسألة بسيط جدا ... ولكن اردت الاستطالة حتى نفهم كيف نتعامل مع اى مشكلة فى التشفير مستقبلا ان شاء الله..
لكى تحل المشكلة فقط انشأ ملف باسم .htaccess على فولدر ال www او فولدر السكربت من خلال ال FTP
واضف فيه السطر التالى الخاص بتعديل التشفير الافتراضى للسيرفر:
مبروك لن تعانى مع مشاكل فى عرض ترميز windows-1256 بالاجاكس بعد الانكود:AddDefaultCharset windows-1256
اتمنى اكون افدتكم ،،