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

مشكلة Mysql واللغة العربية

مغلق
بدأه shoqi في 27 مارس 2005 · 3 رد · 518 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

وصف المشكلة :-

عند البحث داخل قاعدة البيانات ( Mysql ) وجد أنها لا تفرق بين بعض الأحرف العربية ، ولقد تم إختبار لغة ( PHP ) في دعمها للغة العربية والبحث في نص معين داخل اللغة لم تحدث أي مشاكل وتبين أن هناك مشكلة مع اللغة العربية في قاعدة البيانات نفسها . وقد تم إختبار قاعدة البيانات لوحدها فوجد أن قاعدة البيانات مثلاً لا تفرق بين الأحرف ( أ - ل - م ) وتتعامل معها كأنها حرف واحد وبهذا يزيد مجال البحث ولا ترجع القيمة السليمة . مثال ذلك :-

عند البحث عن كلمة "ألم" بالعبارة التالية :

"SELECT * FROM `words` WHERE word='ألم'";

تقوم قاعدة البيانات بالبحث وإرجاع القيم التالية إن وجدت "أأأ" و "أأم" و "أأل" و "أمأ" و "أمم" و "أمل" و "ألأ" و "ألم" و "ألل" و "مأأ" و "مأم" و "مأل" و "ممأ" و "ممم" و "ممل" و "ملأ" و "ملم" و "ملل" و "لأأ" و "لأم" و "لأل" و "لمأ" و "لمم" و "لمل" و "للأ" و "للم" و "للل"

وهكذا في جميع حالات البحث لنتائج البحث التي تم إرجاعها يتم إرجاع الكلمة الأولى كأن تبحث على كلمة "أمل" فتكون كلمة "ألم" ضمن النتائج المرجعه .!!!

. وعند البحث أكثر وأكثر وجدت النتيجة التالية :-

لا تفرق قاعدة البيانات ( Mysql ) بين الحروف التالية وتتعامل معها كحرف واحد :-

( أ - ل - م )

( إ - ه )

( ا )

( ب - ت - ث )

( ج - ح - خ - د - ي )

( ذ )

( ر )

( ز - س - ش - ص )

( ض )

( ط )

( ظ - ع - غ )

( ف )

( ق )

( ك )

( ن - و )

وهذا يسبب مشكلة كبيرة عند البحث باللغة العربية فمثلاً عند البحث عن كلمة "صلاة" تقوم لغة ( PHP ) بإرسال عبارة الـ ( SQL ) إلى قاعدة البيانات وترجع قيم كثيرة من قاعدة البيانات لا يريدها الباحث أصلاً .

أخوكم شوقي .

ملاحظة : تم إرفاق ملف sql لتجربة البحث عن كلمة "ألم" .

Arabic.zip

تم تعديل هذه المشاركة بواسطة shoqi في 27 مارس 2005 في 18:39

#2

بارك الله فيكم

وجزاك كل خير

جاري .. التحميل

لنا عوده باذن الله للتعليق

مشكور

يا رسول الله عفوا

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

ليقم كل منا بواجبه تجاه فلسطين وارض الاسراء والمعراج

يا امة المليار شعب باكمله يباد وانتم تنظرون الى متى تنتظرون

واعلموا ان التاريخ لا يرحم ولن يغفر ولن ينسى

1141244387.gif

1141129327.gif

#3

المشكلة في الترميز ... لكن لتجنب ذلك أضف كلمة binary قبل الحقل لكي يتم المقارنه ثنائيا وليس حروف

جرب هذه :

SELECT * FROM `words` WHERE binary word='ألم'
#4

تسلم أخوي daif .

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

لكن بما إنك جربتها يكون وفرت علي وقت البحث .

ومشكووووووووووور جداً على هذي المعلومة .

هذا الموضوع مغلق.

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