النتائج 1 إلى 10 من 10

الموضوع: PHP والعربي

  1. #1

    PHP والعربي



    صراحة واجهتني مشكله غريبه وأخذت مني وقت طويل أبحث عن حل لها

    انا أول كنت دائماً أستخدم phpmyadmin نسخه قديمه بحيث تكون تدعم اللغة العربية

    الان اصبحت استخدم النسخة الأخيرة منها ومن MySQL

    عند إنشاء قاعدة بيانات وجدول وتعبئته

    تظهر البيانات طبيعية و 100% فقط في صفحات phpmyadmin

    لكن عندما أقوم بعمل صفحة php وأقوم بعرض البيانات من الجدول يظهر لي علامات استفهام مثل هكذا ( ؟؟؟؟؟ )

    واستخدمت كل من الترميزات UTF-8 و Windows 1256 في قاعدة البيانات وفي صفحة الويب ولكن دون جدوى

    وهذا هو الكود المستخدم

    كود HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled 1</title>
    </head>
    <body>
    <?php 
    // Make a MySQL Connection
    mysql_connect("localhost", "root", "root") or die(mysql_error());
    mysql_select_db("website1") or die(mysql_error());
    $result = mysql_query("SELECT * FROM settings")
    or die(mysql_error());  
    while($row = mysql_fetch_array( $result )){
    echo($row['name']);
    }
    ?>
    </body>
    </html>
    بعد بحث طويل جداً وجدت الحل بكتابة الدالة التالية بعد الإتصال بقاعدة البيانات

    كود HTML:
    mysql_query("set names 'utf8'");
    بالتالي تكون الصفحة كالتالي

    كود HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled 1</title>
    </head>
    <body>
    <?php 
    // Make a MySQL Connection
    mysql_connect("localhost", "root", "root") or die(mysql_error());
    mysql_select_db("website1") or die(mysql_error());
    mysql_query("set names 'utf8'");
    $result = mysql_query("SELECT * FROM settings")
    or die(mysql_error());  
    while($row = mysql_fetch_array( $result )){
    echo($row['name']);
    }
    ?>
    </body>
    </html>
    والحمد لله اصبحت النتيجة مرضيه وتم عرض البيانات باللغة العربية

    ولكن هل هذه الطريقه هي الطريقه السليمه والحل النهائي ؟

    أحببت أن أضيف الموضوع لكي يستفيد منه أي شخص خاصه انه هبل بي :funny: , وأيضاً لكي أطرح سؤالي في الموضوع لمن لديه العلم في هذا

    تقبلوا تحياتي





    التعديل الأخير تم بواسطة أبو فارس ; 03-02-2008 الساعة 10:03 AM
    __________________
    سحابة الإسلام
    www.islamcloud.com

    موقعي الشخصي
    www.althari.ws

    سبحان الله وبحمده سبحان الله العظيم


  2. #2
    ينتظر رسالة التوكيد
    تاريخ التسجيل
    Jan 2008
    المشاركات
    2


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

    مرحبا بك أخي الكريم ان استخدامك للـ Code
    mysql_query("set names 'utf8'");

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

    يمكنك استخدام هذا الكلاس لتغيير ترميز البيانات
    File: ConvertCharset.class.php - Convert character set - PHP Classes

    وطريقة الاستخدام سهله بعد عمل Include للملف يتم تحويل البيانات كالتالي

    Convert ('StringToChange', 'FromCharset', 'ToCharset');


    تقبل مروري أخي الكريم

    ------
    ابن عوف






  3. #3


    شكراً لك أخوي ابن عوف

    كلامك جميل جداً

    لكن النقطه المهمه لماذا قد لا يعمل مع بعض الأشخاص

    انا اشكرك من قلبي على طرحك الدالة التي تقوم بتحويل الترميز

    ولكن حبيت اسأل لماذا قد لا تعمل بعد تحويل الترميز باستخدام

    mysql_query("set names 'utf8'");
    لأنني لا أرى سبب يجعلها لا تعمل مع اي مستخدم

    ووجود class كامل في البرنامج لتغير الترميز اذا كانت الطريقه الأولى تعمل بسلام فلا داعي لها اعتقد

    وإلا وش رايك ؟

    واحنا ودنا نستفيد منك يالغالي

    تحياتي لك وشكراً على مرورك





    __________________
    سحابة الإسلام
    www.islamcloud.com

    موقعي الشخصي
    www.althari.ws

    سبحان الله وبحمده سبحان الله العظيم

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    إن تنفيذ تعليمة SET لضبط مجموعة المحارف قبل أي تعليمة SQL أخرى سواء لقراءة أو كتابة البيانات هو حل سليم تماما إلا إن كان إستيراد البيانات العربية إلى MySQL غير سليم تماما في المقام الأول مما قد يضطرك إلى إجراء عمليات التحويل، فإن لم تكن الحال كذلك فالأفضل جعل محرك قاعدة البيانات يعتني بموضوع مجموعة المحارف، حيث تنجز المهمة بفاعلية أكبر من أي عملية تحويل برمجية تحاول القيام بها






  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    بالعودة لموضوع اللغة العربية أود دعوتكم لزيارة موقعي حيث تجدون العديد من الكلاسات المفتوحة المصدر والمخصصة لمعالجة العديد من المسائل الخاصة باللغة العربية أو سواها من الخدمات الموجهة للمستثمر العربي، ستجدون كل هذا والمزيد على العنوان التالي:

    Khaled Al-Shamaa PHP & Arabic Language






  6. #6


    DNSerror

    يعطيك الف عافيه على الردود الجميله

    انا اللي فهمته منك يا طويل العمر

    ان العملية اللي سويتها انا طريقه صحيحه تماماً

    لكن ياليت تفهمنا وش قصدك بـ

    (( إلا إن كان إستيراد البيانات العربية إلى MySQL غير سليم تماما في المقام الأول مما قد يضطرك إلى إجراء عمليات التحويل ))

    وبالنسبه لكلامك الأخير عن محرك قاعدة البيانات

    انا عندي آخر نسخه من محرك قاعدة البيانات وأنشأت قاعدة بيانات بترميز UTF8 ولما أضيف بيانات من phpMyAdmin

    تنضاف طبيعي وأراها عربي طبيعي 100% من phpMyAdmin

    لكن عندما أعمل SELECT للبيانات في صفحة PHP والصفحه أيضاً بترميز UTF8 تأتيني (( ؟؟؟؟ )) إستفهامات

    فقط تظهر عربي عندما أكتب

    mysql_query("set names 'utf8'");

    تأتيني سليمه

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

    set names 'utf8'

    لكن دون أي تغيير ملحوظ

    ما رأيك ؟





    __________________
    سحابة الإسلام
    www.islamcloud.com

    موقعي الشخصي
    www.althari.ws

    سبحان الله وبحمده سبحان الله العظيم

  7. #7


    وعلى فكره موقعك جميل جداً وفيه الكثير من المفيد ومن أفضل إلى أفضل بإذن الله وتمنياتي لك بالتوفيق





    __________________
    سحابة الإسلام
    www.islamcloud.com

    موقعي الشخصي
    www.althari.ws

    سبحان الله وبحمده سبحان الله العظيم

  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2008
    المشاركات
    438


    أنا أستخدم

    كود:
    mysql_query("set names 'utf8'");
    منذ زمن طويل ويعمل بكفاءة والحمد لله.





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

    فضائية الأقصى :: عينك على الوطن
    نيلسات: 10872 عمودي 27500
    عربسات: 12054 عمودي 27500


    إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..

  9. #9


    أنا أستخدم

    كود:
    mysql_query("set names 'utf8'");
    منذ زمن طويل ويعمل بكفاءة والحمد لله.

    شكراً لك أخوي MPHP على طرح تجربتك

    جميل جداً ,

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

    ولكن اتوقع ممكن عمل ذالك من محرك قاعدة البيانات خاصة وأن الأمر الذي يخرج من PHP هو أمر محرك قاعدة البيانات

    لكن كيف الطريقه لتثبيت الترميز من محرك قاعد البيانات أساساً :looking:

    أعتقد أنها عمليه أفضل من كتابة الأمر في كل تطبيق





    __________________
    سحابة الإسلام
    www.islamcloud.com

    موقعي الشخصي
    www.althari.ws

    سبحان الله وبحمده سبحان الله العظيم

  10. #10
    عضو جديد
    تاريخ التسجيل
    Jan 2008
    المشاركات
    7


    أشكرك على موضوعك الهام و فعلا ً أنا استفدت منه ولكني غيرت في صفحة الـ PHP في الميتا إلى التالي :

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    بدلا من

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض