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