حل مشكلة تخزين اللغة العربية في قواعد بيانات MySQL
وحدة من مشاكل تعلم البرمجة عند الناس هي كيف تبرمج، لكن عندنا يالعرب مشكلة ثانية اصعب وهي التعامل مع اللغة العربية أو اليونيكود في البرامج. أحيانا لما ابرمج شغلة اخلصها بسرعة لكن يروح وقت اكثر من البرمجة نفسها في محاولات حل مشكلة العربي والونيكود. لهذا السبب قلت اكتب الشرح هذا في طريقة تخزين العربي في قواعد بيانات MySQL عن طريق لغة برمجة PHP.
الخطوات بسيطة وما راح تاخذ منك اكثر من دقايق لحل المشكلة كاملة 😉
طريقة حل مشكلة العربي واليونيكود unicode في قواعد بيانات MySQL باستخدام البي اتش بي
تغيير نوع قاعدة البيانات إلى اليونيكود المناسب
By default, MySQL makes all tables and the Collation as utf8_unicode_ci
. You should change this for all your unicode columns to utf8_general_ci
.
في الوضع الإفتراضي, ماي اس كيو إل راح ينشيء الجداول والخانات تحت ترميز utf8_unicode_ci
. الترميز هذا ما يشتغل ويجب تغييره إلى ترميز utf8_general_ci
.
جعل اتصال الـphp لقاعدة البيانات متوافق مع العربي واليونيكود
هنا كانت النقطة اللي تطلبت مني بحث مكثف وما حصلت احد بالمواقع يتكلم عنها. نقطة بسيطة جدا لحل مشكلة العربي في البرمجة والتخزين. المطلوب انك تجعل اتصال البي اتش بي يقبل اليونيكود قبل ما تبدأ اوامر التخزين. هنا الطريقة:
هذا الكود اللي بالعادة نكتبه لما ننشئ اتصال بين البي اتش بي وقاعدة البيانات
@mysql_connect($DB_host, $DB_user, $DB_pass) or die("Could not connect!"); @mysql_select_db($DB_name) or die("Could not select database!");
الطريقة ببساطة انك تظيف الأمر mysql_set_charset('utf8');
بعد ما تنشئ الاتصال بقاعدة البيانات مباشرة. هنا يكون شكل الكود:
@mysql_connect($DB_host, $DB_user, $DB_pass) or die("Could not connect!"); mysql_set_charset('utf8'); @mysql_select_db($DB_name) or die("Could not select database!");
تخزين ملف البي اتش بي بصيغة يونيكود
أيضا هذه النقطة كانت من الأشياء اللي تطلبت مني وقت لحلها. بكل بساطة لما تخزن ملف البي اتش بي نفسه لازم تخلي الترميز حقه ترميز يونيكود. كل برنامج طبعا له طريقته، وانا البرنامج اللي استخدمه هو NotePad++ وهنا طريقة التحويل:
طبعا لا تنسى اذا كنت تبي تعرض عربي في المتصفح انك تكتب الميتا تاق المناسب داخل تاق الـ head
. وهذا المطلوب كتابته:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
وأيضا اذا كان عندك خانات يدخلها المستخدم لازم في تاق الـ form
تحط الخاصية التالية:
accept-charset="utf-8"
هذا كل اللي تحتاجه لحل مشكلة اللغة العربية في قواعد بيانات MySQL ولغة برمجة PHP. اكتب لي اذا الشرح هذا حل مشكلتك، أو اذا واجهتك أي مشاكل. وطبعا تقدر تنشر الشرح هذا عن طريق الأزرار اللي تحت علشان تفك أزمة شخص ثاني وتخليه يدعي لنا 🙂
هلا عزيزي ,,
لقد طبقت الخطوات جميعها لكن utf8_general_ci غير موجوده في الخيارات الخاصه بالترميز بس موجود utf16_general_ci اخترته بس لازالت نفس المشكله موجوده مع اني طبقت كل الخطوات
Pingback: حل مشكلة تخزين اللغة العربية في قواعد بيانات MySQL – المدرسة العربية للبرمجة
لم تحل هذه المشكلة بعد ما جربت كل هذه الخطوات فما العمل جزاكم الله خير
طبقت أنا أيضا جميع ما ذكرت استاذي على المدونة ..ولكن دون فائدة ولك أن تزور الموقع وترى بنفسك http://yemenguys.com. فيا ترى هل هناك حل آخر بهذا الخصوص. وشكرا على الشرح الرائع وجزاك الله خير
السلام عليكم، هل النص الموجود هنا كان مخزن في قاعدة البيانات قبل تطبيق التغييرات؟ لأن البيانات يجب ان تكتب من البداية بترميز اليونيكود. جرب مسح البيانات وإدخال بيانات جديدة. أيضا، كيف عرض الحروف في phpmyadmin؟ هل هو صحيح هناك؟
شكرا علي الموضوع المفيد انا كنت بأبحث عن المشكله وانت افدتني جزاك الله خيرا
شكرا على تلك المعلومات القيمة ، بارك الله فيك ونفع بك
الحمد لله تم حل المشكلة ولكن فى مشكلة اخرى هى ان هذا الكون mysql_set_charset(‘utf8’); غير ثابت بمعنى انى لوحدثت الاستعلام او غيرته يتم حذفه ززز ياريت طريقة لتثبيت هذا الكود
جزاك الله خير يا اخي حليت لي مشكلة ماستطعت احصل على حلها من عدة مواقع
شكرا
جاري التجربة
السلام عليك اخي الكريم .. مشكور على الشرح انقذتني والله ..
كان عندي مشكل في حفظ الملفات بالتكويد utf8 .. ولله الحمد تم اصلاحه كل شئ تمام الان ..
بارك الله فيك.
شكراً
الله يعطيك ألف عافية بصراحة حليت لي معضلة كانت موقفه شغلي شهور
Pingback: غير معروف
عملت كل الطرق وما زالت المشكلة مستمره ارجو المساعدة شكرا لك
لم تحل المشكلة بعد
كس امك ما استفدناش ايري فيك
عاشت ايدك
مرحبا بالجميع عندي مشكلة عدم عرض اللغة العربية في قاعدة بيانات mariadb
هل يوجد احد يستطيع المساعدة شكرا