تغيير ترميز قاعدة بيانات؟؟

مرحبا

واجهتني مشكلة عند محاولة إصلاح أحد المواقع
فبعد أن قمت بتصدير قاعدة البيانات و فيها أكثر من 500 مقالة و أعضاء و ...
كان الترميز المستخدم هو

CHARACTER SET utf8 COLLATE utf8_swedish_ci;

و لذلك صارت الكتابة من الشكل

?‡?????‡?†?£?‰ ?‡???“?¦???‡?

هل هناك طريقة لإعادة المحتويات إلى الترميز windows-1256 ؟


شكرا

التعليقات

الأيهم

تحصل هذه المشكلة عند تصدير قاعدة بيانات MySQL 4.1 وما بعده، وهنا يجب التأكد من أمرين أساسيين: 1- هل ملف SQL قابل للقراءة، يعني إذا فتحت ملف SQL فهل تستطيع قراءة النصوص فيه؟ 2- بعد الاستيراد هل يمكن قراءة النصوص من القاعدة نفسها، وليس من التطبيق. إذا كان من الممكن قراءة النصوص في ملف SQL فمن الممكن تغيير الترميز لكل الجداول بتعليمة Replace All واحدة، وإذا لم يكن من الممكن قراءة النصوص، فالمشكلة تأتي من القاعدة القديمة نفسها وليس من عملية التصدير، وقد تكون نشأت أصلا من إنشاء القاعدة أو تخزين البيانات فيها. وهنا نحتاج إلى معلومات إضافية حول المشكلة لتحديد الحل.
الاسم الكامل
سلام الجهني
salam

شكرا لك أستاذ الأيهم على الرد لا ملف ال SQL غير ممكن قراءته لأن الرموز التي ذكرتها فيه و ليس في التطبيق و بعد الاستيراد نفس الشيء لا يمكن قراءة النصوص لا في القاعدة ولا في التطبيق. ما هي المعلومات الإضافية التي ممكن أن تساعد في حل المشكلة؟
الأيهم

حاول تنفيذ الأمر التالي على قاعدة البيانات الأصلية: mysqldump -u [your user name] -p --opt [dbname] > [filename.sql] سيولد لك هذا الأمر ملف sql يفترض أن يكون مطابقا للمعلومات المخزنة في الجداول، وبذلك تتجنب أية أخطاء قد يرتكبها برنامج التصدير الذي تستخدمه. افتح الملف الجديد وتأكد أنه قابل للقراءة. تجد البرنامج mysqldump في مجلد البرامج التنفيذية ل Mysql، وهو عادة /usr/bin أو c:\mysql\bin
الاسم الكامل
سلام الجهني
salam

جربت و لم أنجح ، لا أظن أن المشكلة في التصدير ف قاعدة البيانات على السيرفر قبل التصدير لا يمكن قراءتها. و لكن كما كتبت أنت في مقالة سابقة عن قراءة الرسائل التي تصل بترميز يونيكود ، هل يمكن تحويل الكتابات الموجودة في قاعدة البيانات إلى الترميز windows-1256 في تطبيق ال PHP الكتابة واضحة ولا يوجد مشاكل. هل ممكن تحويل كلمات مثل هذه ?£?‰ ?‡???“?¦???‡? إلى كلمات مفهومة بطريقة ما؟؟؟ شكرا
الاسم الكامل
سلام الجهني
salam

أنا استخدمت التالي: $dbhost="localhost"; $dbuser="salam"; $dbpass="1234"; $dbname="bbs"; $backup="bbs.sql"; و بعدها وضعت المتحولات في التعليمة التالية: $command="mysqldump -u $dbuser -p $dbpass --opt $dbname > $backup"; ثم قمت بتنفيذه: system($command); و عند تشغيل الملف تم توليد قاعدة البيانات و لكنها كانت فارغة. ما هو السبب هل يوجد نقص فيما كتبته؟؟
الاسم الكامل
سلام الجهني
salam

المشكلة انحلّت معي بطريقتين الأولى خاصة و التانية ممكن تكون عامة : 1- الحل الأول هو أن الموقع يعتمد على نظام مفتوح المصدر و من خلال لوحة التحكم الخاصة بالموقع يوجد خيار backup و هو يأخذ نسخة احتياطية و تكون الكتابة باللغة العربية صحيحة لأن البرنامج يقرأ من قاعدة البيانات دون أخطاء. 2- الحل الثاني الذي جربته هو الاستعلام من قاعدة البيانات الحالية و إضافة الإستعلامات إلى ملف مستقل و لكن بشكل يجعل محتوى الملف مشابه تماما لملف ال sql الأصل كما يلي : مثلا ليكن الجدول التالي أحد جداول قاعدة بيانات و اسمه t1 . CREATE TABLE `articles` ( `art_id` smallint(5) unsigned NOT NULL auto_increment, `art_cat` smallint(5) unsigned NOT NULL default '0', `art_subject` varchar(200) NOT NULL default '', `art_article` text NOT NULL, PRIMARY KEY (`art_id`) ) TYPE=MyISAM AUTO_INCREMENT=1 ; نستخرج بعض المحتويات منه و نقوم بإضافتها إلى ملف مثلا: $query=mysql_query(" select art_id,art_cat,art_subject,art_article limit 0,10 "); ///////////////////////////// $i=0; $fileopen=fopen("filey.sql","a"); while ($i<10){ $art_id=mysql_result($query,$i,"art_id"); $art_cat=mysql_result($query,$i,"art_cat"); $art_subject=mysql_result($query,$i,"art_subject"); $art_article=mysql_result($query,$i,"art_article"); $str ="INSERT INTO `articles` VALUES ("; $str.=$art_id.","; $str.=$art_cat.",'"; $str.=$art_subject."','"; $str.=$art_article; $str.=");"; $filewrite=fwrite($fileopen,$str."\n"); $i++; } fclose($fileopen); و طبعا كل هذا بعد الاتصال الناجح بقاعدة البيانات. يمكن الطريقة غبية بس كنت مضطر و مشي حالي تم التحرير لوضع & l t ; بدلا من إشارة الأصغر [ تم تحريره بواسطة salam on 26/6/2006 ]

إضافة تعليق جديد

لا يسمح باستخدام الأحرف الانكليزية في اسم المستخدم. استخدم اسم مستخدم بالعربية

Restricted HTML

  • وسوم إتش.تي.إم.إل المسموح بها: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • تفصل السطور و الفقرات تلقائيا.
  • Web page addresses and email addresses turn into links automatically.

دعوة للمشاركة

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