الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه MouathPHP في 18 ديسمبر 2013 · 14 رد · 5,748 مشاهدة · في قواعد بيانات MySQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

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

 

 

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

 

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

 

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

 

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

 

الترميز: utf8_unicode_ci

 

 

 

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

 

 

 

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

 

 

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

 

 

شكرا :)

#2

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


الكتابة-تظهر-رموز-؟؟/


مشكلة-في-قواعد-بيانات-الحروف-العربية-تظهر-رموز-غريبة

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

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

 

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

 

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

 

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

 

 

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

 

 

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

#4

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

 

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

 

 

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

 

شكرا لكم.. :)

#5

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

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

صديقي .. يوحد قيمة للترميز 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  ...

 

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

بالتوفيق ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#6

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

 

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

 

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

 

 

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

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

 

وهذا ما جاني:

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

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

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#8

نعم

#9

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

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

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#10

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

 

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

#11

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

phpmyadmin_collation_3.png

تم تعديل هذه المشاركة بواسطة حسام الشامي في 19 ديسمبر 2013 في 18:36

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#12

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

 

 

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

 

 

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

#13

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

لتغيير ترميز القاعدة , نضغط على القاعدة ثم من التبويب 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

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#14

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

 

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

 

حقا أفتدتني.

 

 

 

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

 

شكرا.

#15

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

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…