السلام عليكم.
توضيح: مثال لتحويل قاعدة بيانات فارغة بنيت ب latin1 الى utf8 لكي تدعم كتابة العربية فيما بعد
وليس لتحويل العربية التي كتبت اصلاً بترميز آخر.
أليوم كان يتوجب علي تغيير ترميز قاعدة بيانات الى الترميز العالمي utf8 - عادة أفعل التالي:
من phpmyadmin اعمل تصدير export مع امكانية Drop tables if exists - اذهب الى اي برنامج معالجة نصوص متطور - واستبدل default charset = latin1 الى default charset = utf8
أو اذا كانت المهمة مجرد لائحة واحدة فأقوم بعمل التالي
اليوم قلت - كفى - يجب أن أنظم هذا الأمر - فأعددت هذا الكود الصغير.كود:ALTER TABLE `tableName` CONVERT TO CHARACTER SET `utf8`;
لكن انتبهوا - انصح بإستعماله "على النظيف" - لأن بعض النصوص قد تتغير بهذه الطريقة.كود:<html dir="rtl"> <body> <?php // هذا السكريبت يساعد بتحويل الترميز الى ترميز عالمي // utf8 // انتبه - فبإستعماله يمكنك ان تغير بعض المعطيات. ينصح استعماله فقط قبل بدء ادخال المعطيات. // مرة ثانية - استعمل هذا السكريبت قبل البدء بكتابة العربية وليس بعدها!!!! // فهو لا يحول النص فعلياً بل فقط يعلم السيرفر أن الترميز هو يو تي اف 8 // كاتب السكريبت: شادي مصالحه - ولا - لن أرد على اسئلة اضافية - شكراً لكم $hostname= "localhost"; $database= "your_database_name"; $username= "root_or_your_username"; $password= "your_password"; $dbs = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($database, $dbs); function q($query){ global $dbs; echo "تغيير الاستعلام : ".$query."<br>"; $result = mysql_query($query,$dbs); if (!$result) { die('Invalid query: ' . mysql_error()); } } $tables = mysql_list_tables($database); $count = 0; q("ALTER DATABASE CHARACTER SET `utf8` COLLATE `utf8_general_ci`; \r\n"); while ($count < mysql_numrows($tables)) { $tableName=mysql_tablename($tables,$count); $convertQuery='ALTER TABLE `'.$tableName.'` CONVERT TO CHARACTER SET `utf8`;'; q($convertQuery); $count++; } ?> </body></html>
وايضاً - أنا لم أجربه بنطاق واسع - اذ لا اعلم اذا كانت هناك اضرار أخرى منه.
وايضاً - ليس للكل يوجد امكانية تشغيل الأمر Alter حتى على قاعدة بياناتهم هم.
خبرتي توقفت عند سؤال محدد - يا ريت حد يقدر يعرف ليش - أنني عندما جربت ان أدمج كل الأوامر بجملة استعلامية واحدة - لم أنجح. أي بدل أن أنفذ كل سطر Alter على حدة - حاولت جمع كل الأوامر بسطر واحد لكن ال mysql لم يتيح لي هذه العملية.
أتمنى ان يفيدكم.


رد مع اقتباس
فالأمر يتعدى ذلك بكثير! << 


