السلام عليكم ورحمة الله وبركاته
بعد النقاش الذي دار بيني وبين الأخ مدمن نت والأخ Basim
حول ظهور علامات (؟؟؟؟؟) عند التحويل لقواعد بياناتهم ذات الترميز latin1
إتضح أن المشكله من إصدارات الـ MySQL 4.1 وبعض الإعدادات الغير افتراضيه
فعند التحويل من أي ترميز أحادي الى ترميز اليونيكوود بواسطة السكربت فإن التحويل يتم بدون مشاكل لإعتماد سرفرات الـ MySQL على ترميز اليونيكوود في عملها مع القاعده الأم mysql والتي تحتفظ ببيانات مستخدمي قواعد البيانات.
أما عند التحويل من أي ترميز أحادي الى ترميز أحادي اخر بواسطة السكربت فإن التحويل يتم على بعض السرفرات وبعضها لا يتم التحويل.
ومن هنا بدأت البحث عن المشكله وعن السبب الذي جعل التحويل لا يتم فكان الخلل من بعض إعدادات الـ MySQL .
ولكي تتضح الصوره أكثر فسوف أوضح الطريقه التي من خلالها أنشأت هذا السكربت.
فكرة السكربت تعتمد على الطبقات الخارجيه لتحويل الترميز من وإلى.
فالطبقات الخارجيه كما هو معروف هي كالتالي:
طبقة العميل ( Client )
طبقة الإتصال ( Connect )
طبقة النتائج ( Result )
هذه الطبقات تعطى ترميزاً ثابت عند تنفيذ الأمر التالي
ولكن عندما أقوم بإعطاء هذه الطبقات التراميز بالشكل التالي:
SET character_set_client = 'latin1'";
SET character_set_connection = 'cp1256'";
SET character_set_results = 'cp1256'";
فسوف يتم التحويل من ترميز latin1 الى ترميز cp1256
ونفس الكلام ينطبق على التراميز الأخرى
ولهذا جاءت فكرة هذا السكربت وقمت بعملها وتقديمها برمجياً.
الان قمت بعملية تعديل برمجي على السكربت و عمل إصدار جديد 2.1
بحيث يتم إعتماد الطريقه السابقه في التحويل إلى ترميز اليونيكوود فقط
أما عند التحويل من ترميز أحادي مثل الترميز اللاتيني إلى أي ترميز أحدي آخر مثل الترميز العربي فإن السكربت سيستخدم طريقة أخرى جديده قمت بإبتكارها للتحويل بين التراميز الأحاديه ولكي لا ندخل في مشاكل مع إعدادات الـ MySQL كما حدث في الإصدار 2.0
السكربت بالمرفق مع هذا الرد وستسركم النتائج هذه المره.
ملاحظه:
تمت إزالة المرفق للإصدار 2.0 من الموضوع الأساسي.
بانتظاركم