You are here

الصفحة الرئيسية » المنتديات » منتديات الإنترنت » تصميم مواقع الإنترنت
11 posts / 0 new
آخر رسالة
تغيير ترميز قاعدة بيانات؟؟
مرحبا واجهتني مشكلة عند محاولة إصلاح أحد المواقع فبعد أن قمت بتصدير قاعدة البيانات و فيها أكثر من 500 مقالة و أعضاء و ... كان الترميز المستخدم هو CHARACTER SET utf8 COLLATE utf8_swedish_ci; و لذلك صارت الكتابة من الشكل ?‡?????‡?†?£?‰ ?‡???“?¦???‡? هل هناك طريقة لإعادة المحتويات إلى الترميز windows-1256 ؟ شكرا
Taxonomy upgrade extras: 
Re: تغيير ترميز قاعدة بيانات؟؟

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

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

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

شكرا لك أستاذ الأيهم على الرد

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

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

حاول تنفيذ الأمر التالي على قاعدة البيانات الأصلية:
mysqldump -u [your user name] -p --opt [dbname] > [filename.sql]

سيولد لك هذا الأمر ملف sql يفترض أن يكون مطابقا للمعلومات المخزنة في الجداول، وبذلك تتجنب أية أخطاء قد يرتكبها برنامج التصدير الذي تستخدمه. افتح الملف الجديد وتأكد أنه قابل للقراءة.

تجد البرنامج mysqldump في مجلد البرامج التنفيذية ل Mysql، وهو عادة /usr/bin أو c:\mysql\bin

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

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

و لكن كما كتبت أنت في مقالة سابقة عن قراءة الرسائل التي تصل بترميز يونيكود ، هل يمكن تحويل الكتابات الموجودة في قاعدة البيانات إلى الترميز windows-1256

في تطبيق ال PHP الكتابة واضحة ولا يوجد مشاكل.
هل ممكن تحويل كلمات مثل هذه ?£?‰ ?‡???“?¦???‡? إلى كلمات مفهومة بطريقة ما؟؟؟
شكرا

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

كيف يعني جربت ولم تنجح

هل كان الملف المصدر مباشرة قابلا للقراءة أم لا؟

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

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

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

أنا استخدمت التالي:


$dbhost="localhost";
$dbuser="salam";
$dbpass="1234";
$dbname="bbs";
$backup="bbs.sql";

و بعدها وضعت المتحولات في التعليمة التالية:


$command="mysqldump -u $dbuser -p $dbpass --opt $dbname > $backup";

ثم قمت بتنفيذه:


system($command);

و عند تشغيل الملف تم توليد قاعدة البيانات و لكنها كانت فارغة.
ما هو السبب هل يوجد نقص فيما كتبته؟؟

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

مرحبا سلام
هل حلت المشكلة؟ إذا كان نعم!!! فكيف؟

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

أهلين

المشكلة حليتها بس مو بهالطريقة.
يعني كنت مستعجل لذلك عملت طريقة يمكن بعيدة شوية عن المألوف بس رح أكتبها بالتفصيل هون.

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

المشكلة انحلّت معي بطريقتين الأولى خاصة و التانية ممكن تكون عامة :

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 ]

Log in or register to post comments

اسم المستخدم

سينما الدراما السياسية

اقتباسات مختارة

ليس بمقدور إنسان أن يجبرني على أن أكون سعيداً على طريقته هو

عمانوئيل كانط
من اختيار منال ابراهيم

ليست المشكلة هي خلق معيار للناس ليكونوا متماثلين بل خلق معيار ينصّ على أن الازدهار الكامل، والولادة الكاملة، والحيوية الكاملة يجب أن تكون في كل شخص من غير النظر إلى مسألة أية "زهرة" خاصة هو

إريك فروم
من اختيار منال ابراهيم

إن كنت غاضباً فإن أفضل ما يمكن أن تسأله هو : " كيف يمكنني أن أتعلم من هذه المشكلة لكي لا تحدث لي قط من جديد ؟ " هذا نمط من الأسئلة النوعية ،حيث إنه سيقودك من موضعك الذي تواجه فيه التحدي الى سبل تدلك على كيفية تجنب مثل هذا الألم في المستقبل

أنطوني روبنز
من اختيار منال ابراهيم

لم يكن بمقدوري أن اختار أهلي
لهذا أدقق في اختيار أصدقائي !

حسن م يوسف
من اختيار منال ابراهيم

أيقظ جسمك ، و تعلم أن تضعه في مواضع ممتعة باستمرار مهما كانت الظروف

أنطوني روبنز
من اختيار منال ابراهيم