• 0
MouathPHP

مشكلة في الترميز في قاعدة البيانات نفسها mysql

سؤال

السلام عليكم ورحمة الله وبركاته ،،

 

اخواني الأعزاء:

 

 

لدي مشكلة أحبطتني جدا ً ..

 

لدي في قواعد البيانات ترميز اللغة العربية يظهر مثل: "؟؟؟؟؟"

 

لا أعلم لماذا وجربت جميع الحلول ومالي غيركم بعد الله،

 

ملاحظة: المشكلة في نقس قاعدة البيانات وليست في صفحات الموقع .. عندما أقوم بالإدخال يدويا في قاعدة البيانات ،،

 

الترميز: utf8_unicode_ci

 

 

 

المشكلة في القاعدة وليس لها دخل في السيرفر أو ملفات الموقع،،

 

 

 

أتمنى حل مشكلتي لطالما بحثت عنها حل ولم اجد !

 

 

الله يوفقكم يارب،

 

 

شكرا :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

14 إجابة على هذا السؤال .

  • 0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك على الرد،،

 

لكن المعلومات غير كافية ،،

 

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

 

لما ادخل ادخال يدوي تجيني هذه المشكلة !

 

 

يعني ادخال عن طريق القاعدة وليس عن طريق الكود البرمجي،،

 

 

انتظر المساعدة،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المشكلة ما كانت موجودة في قاعدة البيانات الإصدار القديم ،،

 

اما الجديد رفع ضغطي حاولت بجميع الطرق ولم اجد اي حل،،

 

 

أتمنى المساعدة يا اخوان،

 

شكرا لكم.. :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم.... 

لا اعرف , بالنسبة للبيانات القديمة إن يمكن استرجاعها أم لا ... الحل التالي يعمل من أجل البيانات الجديدة ..

صديقي .. يوحد قيمة للترميز charset  من اجل القاعدة ككل و من اجل الجدول و من أجل العمود ... يعني تغيير ترميز القاعدة لن يغير ترميز الجدول (لكنه يؤثر على الجداول الجديدة بعد التغيير) و كذلك تغيير ترميز الجدول لن يؤثر على ترميز الاعمدة الموجودة ..

لذلك عليك القيام بمايلي : تغيير ترميز القاعدة ككل , ثم تغيير ترميز كل جدول و ثم تغيير ترميز كل حقل ...

مثلا لو كان لدينا قاعدة بيانات اسمها test  و فيها جدول اسمه test1  و فيه عمود اسمه day  , يتم التغيير بالأوامر التالية :  

ALTER SCHEMA `test`  DEFAULT COLLATE cp1251_general_ci ;ALTER TABLE `test`.`test1` CHARACTER SET = cp1256 , COLLATE = cp1256_general_ci ;ALTER TABLE `test`.`test1` CHANGE COLUMN `day` `day` VARCHAR(30) CHARACTER SET 'cp1256' COLLATE 'cp1256_general_ci' NOT NULL  ;

 طبعا لو كنت تعمل من  mysql workbench   ستجد الخيارات السابقة على الواجهة دون كتابة اوامر . ..

كليك يمينية على القاعدة ثم alter schema  ثم نختار collation  ثم apply  .

كليك يمينة على الجدول ثم alter table  ثم نختار الــ collation  ثم apply  .

كليك يمينة على الجدول ثم alter table  ثم من التبويب columns نختار العمود المطلوب ثم  على اليمين يظهر خيار collation  ...

 

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

بالتوفيق ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك اخي على ردك ،،

 

وانا لا اريد اسعادة البيانات القديمة ،،

 

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

 

 

أريد فقط حل مشكلة الترميز ..

وكتبت في سطر الأوامر الكود تبعك:

 

وهذا ما جاني:

dot.gif #1044 - Access denied for user '*****' to database 'test'
 
 
مع العلم بأني أستخدم PhpMyAdmin
 
 
شكرا
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هل قاعدة البيانات اسمها test  ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

حاول تنفيذ الامر الثاني و الثالث .. أو الثالث فقط ...

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حاولت والله أخي ،،

 

انا استضافتي hosting24.com

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

انقر على قاعدة البيانات كي يتم عرض الجداول , بجانب كل جدول هناك خيارات  (Browse -   Structure - Search - Insert)  ندخل على structure  فيعرض لنا الاعمدة ..بجانب كل عمود خيارت (Change  Drop) نأخذ change  ثم نختار الــ collation  بالقيمة (cp1256_general_ci) ..  ثم نضغط save  .

phpmyadmin_collation_3.png

تم تعديل بواسطه حسام الشامي
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك أخي والله و أخيرا تم الحل الحمدلله،،

 

 

لكن هل كل ما اجي اسوي جدول لازم اسوي نفس الحركة ؟

 

 

و اذا عندي ملف تثبيت السكربت .. كيف احوله الى الترميز العربي تلقائيا ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ... بارك الله بك أخي ..

لتغيير ترميز القاعدة , نضغط على القاعدة ثم من التبويب Operations  نختار قيمة ( Collation) بالقيمة (cp1256_general_ci) ثم نضغط GO  .

الآن الجداول الجديدة سيكون لها نفس الترميز الافتراضي الخاص بالقاعدة (ما لم نغيير ذلك بشكل يدوي) أما الجداول القديمة , فنغيير الترميز الخاص بها عن طريق الضغط على الجدول ثم التبويب operations   ثم  نحدد قيمة Collation بالقيمة   (cp1256_general_ci) ثم نضغط GO  .

و نغيير ترميز الحقول كما ذكرت في مشاركة سابقة .

لكن هل كل ما اجي اسوي جدول لازم اسوي نفس الحركة؟

 

إذا وضعت ترميز للقاعدة , فلا داعي ان تقوم بأي شئ لأنه سيأخذ نفس ترميز القاعدة .. أما إذا لم تغيير ترميز القاعدة , عندها يجب تغيير ترميز كل جدول بشكل منفصل ..

و اذا عندي ملف تثبيت السكربت .. كيف احوله الى الترميز العربي تلقائيا ؟

 

قم بوضع  (DEFAULT CHARSET=cp1256) ..في عبارة كل  إنشاء الجدول ..

REATE TABLE IF NOT EXISTS `test1` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `date` date NOT NULL,  `day` varchar(30) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=6 ;

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

بالتوفيق .

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الله يجزاك خير أخي كففيت ووفيت ،،

 

الله يكثر من امثالك،

 

حقا أفتدتني.

 

 

 

أطيب الأماني :)

 

شكرا.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله بك أخي و جزاك خيرا ...

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .