صفحة 3 من 7 الأولىالأولى 1234567 الأخيرةالأخيرة
النتائج 31 إلى 45 من 105

الموضوع: الترميز في ( MYSQL )

  1. #31
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    أخي العندليب.

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

    بصراحةاود ان اطرح طلبا صغيرا .
    الموضوع هنا يتحدث مع المبيرمجين ونعم انا منهم .
    ولكن صدقني ضعت .

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

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

    لا اريد الخوض بمعمة الترميز وفهم الموضوع (اقصد المستخدم العادي)

    اريد خطوات سريعة
    1
    2
    3

    ويصبح الموقع يدعم العربية من كل النواحي واقدر اعمل ابديت وباكب اب و phpmyadmin بالعربي.

    يعني اوصل المستخدم البسيط الى ( اللورباك ) الزبدة . بس دنماركية لعنها الله .
    اصبح خلينا على الزبدة حاف :>

    وبذلك يفرح الكل ومنهم انا

    بان استخدم اخر اصدار مع ترميز عربي

    بالنسبة لل UTF8 فبصراحة عندي لك سؤال.

    انا بصدد اطلاق موقع لي ومحتار الترميز الذي يجب ان استخدمة.
    ما نصيحتك ؟ وهل ال UTF8 هو الأمثل

    وهل يغنيني ال UTF8 عن التعديلات التي يجب القيام بهرا كرامة للغة العربية المدللة .

    جزاك الله خيرا اخوي .
    موضوع ثقة بعدد حروفة وكل حرف كيلو ذهب






  2. #32


    اخي العندليب لقد قمت ببناء قاعدة بالترميز
    cp1256_general_ci
    لكن عندما اقوم بستدعاء البيانات تظهر بشكل
    ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    عجزت وماعرفت احل المشكلة





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

  3. #33


    الأخ besho وفقك الله لكل خير

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

    سأذكر لك إحدى الطرق في التحويل.

    الان وحسب ماقرأنا في الموضوع هناك 4 طبقات داخليه و3 طبقات خارجيه.

    الطبقات الداخليه ترتيبها كالتالي:
    خادم ------> قاعده -----> جدول -------> حقل

    لذلك إذا أردت أن تقوم بالتحويل يجب عليك العمل من الأعلى الى الأسفل
    بمعنى أوضح أن نقوم أولاً بتحويل ترميز طبقة الحقل وبعده ترميز طبقة الجدول وبعده ترميز طبقة القاعده واخيراً ترميز طبقة الخادم.
    ترميز طبقة الخادم أمره سهل وقد ذكرنا هذا في أول الموضوع بأن نستخدم الجمله التاليه عند الإتصال:
    كود HTML:
    set character_set_server='cp1256';
    أما الطبقات الخارجيه الثلاثه كلها فأمرها سهل أيضاً ونستخدم الجمله التاليه عند الإتصال:
    كود HTML:
    set names cp1256;
    باقي الطبقات الداخليه الثلاثه وهي مرتبه كالتالي:
    حقل ----> جدول -----> قاعده

    أولا: طبقة الحقل
    الان حتى نبدأ بتحويل ترميز حقل من الحقول يجب أن يكون هذا الحقل ذو بيانات نصيه ؟
    بمعنى أن يكون الحقل أحد الأنواع التاليه:
    set
    enum
    char
    varchar
    text
    mediumtext
    longtext
    وهذه الأنواع يجب تحويلها إلى صيغه ثنائيه ( binary ) وكما تعلم هناك انواع للحقول الثنائيه في الـ mysql وهي كالتالي:
    binary
    varbinary
    blob
    mediumblob
    longblob
    لذلك يحول كل نوع حقل من الحقول النصيه حسب التسلسل التالي:
    كود:
    set ----------------> blob
    enum -------------> blob
    char --------------> binary
    varchar ----------> varbinary
    text --------------> blob
    mediumtext -----> mediumblob
    longtext ---------> longblob
    لتفاصيل أكثر عن الحقول النصيه في الـ Mysql أدخل على الرابط التالي:
    http://dev.mysql.com/doc/refman/4.1/...-overview.html

    لنفرض على سبيل المثال لدينا حقل إسمه f1 ونوعه char ومقاسه 10
    نقوم بتحويل ترميزه حسب الأمرين التاليه:
    كود HTML:
    ALTER TABLE `table` CHANGE f1 f1 binary(10);
    ALTER TABLE `table` CHANGE f1 f1 char(10) CHARACTER SET cp1256;
    يجب التركيز على مسألة المقاس ولا تهملها ولاحظ في المثال السابق أنني حولت 10 الى 10.

    السؤال المهم الان:
    ماذا لو كانت الجداول في قاعدة بياناتك بها أكثر من حقل نصي فكيف ستتعامل مع هذا الكم منها ؟
    بصراحه وبكل وضوح يجب عليك التعامل معها كلها أولاً



    ثانياً : طبقة الجدول
    بعد الانتهاء من تحويل ترميز الحقول النصيه كلها في أي جدول تقوم بتحويل ترميز الجدول حسب الأمر التالي:
    كود HTML:
    ALTER TABLE `table` DEFAULT CHARACTER SET cp1256
    يالله كم هو سهل جداً تحويل ترميز الجدول اسهل بكثير من طبقة الحقول :anger2:


    ثالثاً: طبقة القاعده
    بعد الانتهاء من تحويل ترميز الجداول كلها تقوم بتحويل ترميز القاعده حسب الأمر التالي:
    كود HTML:
    ALTER DATABASE `db` DEFAULT CHARACTER SET cp1256
    أيضاً سهل تحويلها

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

    عيوب الطريقه السابقه:
    1- لا يمكن التحويل الى ترميز اليونيكوود utf8 أو ucs2 أو العكس ( من واقع تجربه ) .
    2- إذا كان السرفر يعمل على الـ safemode سوف تفشل طريقة التحويل لأن أقصى وقت محدد لتنفيذ عمليات الـ php هو 30 ثانيه.



    قمت ببرمجة سكربت بالـ php يقوم هذا السكربت بأخذ جداول قاعدة بيانات تحددها له وبعدها يبدأ هذا السكربت بأخذ كل جدول وجمع كل حقوله وبعدها يقوم بتحويل هذه الحقول واحداً تلو الآخر بطريقه تلقائيه وبعد أن ينتهي من تحويل الحقول يقوم بتحويل ترميز الجدول ويبدأ بعدها بالجدول التالي وهكذا حتى ينتهي من كل الجداول وبعدها ينتهي بتحويل ترميز قاعدة البيانات.

    السكربت بالمرفق .

    ملاحظه مهمه جداً قبل الإستخدام:
    خذ نسخه إحتياطيه قبل القيام بتنفيذ السكربت.


    ملاحظه مهمه جداً بعد الإستخدام:
    بعد نجاح عملية التحويل يجب عليك إرسال الأوامر التاليه في كل إتصال بالقاعده:

    كود HTML:
    set character_set_server='cp1256';
    set names cp1256;

    الأخ سورية
    بعد الإتصال بالقاعده يجب أن تستخدم الأمرين التاليه في البدايه:
    كود HTML:
    set character_set_server='cp1256';
    set names cp1256;

    وأي سؤال في السكربت أو في الطريقه المعقده أنا حاضر.





    الملفات المرفقة الملفات المرفقة
    • نوع الملف: zip c.zip‏ (1.6 كيلوبايت, 691 مشاهدات)

  4. #34
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    اخي العندليب - جزاك الله خيرا وشكرا على السكريبت الذي هو الان في بطن سوالف

    لن احملة الان ولكن سوف احملة وقت الحاجة فهو بجهازي لن يبقى اكثر من 10 دقائق وانسى مكانة اما هنا فهو ثابت باذن الله.
    لم تجبني عن موضوع لو اني احفظ بيناتي ك UTF8 هل انا مضطر الى العمل بكل هذة التعقيدات .؟

    اعلم ان الترميز العربي اصغر حجما ولكن - لا اريد الغوص بالمعمعة .

    انا مستخدم عادي وعندي سجل زوار فرحان فية واتفاخر امام اصحابي ان السيرفر MYSQL5 هل بان احفظ البينات UTF
    يغنيني عن موضوع تعديل الاتصال وتحويل الجداول وووووو . ؟

    هنا السؤال الذي سوف يحدد ما هو الترميز المستخدم .






  5. #35


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

    يجب أن تعلم أن اليونيكوود له قوانين متعدده
    طبق الأمر التالي حتى تعرف ماهي هذه القوانين
    فكل لغه لها قانون
    كود PHP:
    show collation like 'utf%' 
    لمعلومات أكثر قم بزيارة الصفحه التاليه:
    http://mysql.inspire.net.nz/doc/refm...t-unicode.html

    وإذا تبي نصيحتي
    إبعد عن هذا الترميز لأن هناك مشاكل برمجيه كثيره مع اليونيكوود.


    الحمدلله إستفدت كثيراً من مسألة تحويل الترميز الى الترميز العربي cp1256
    أقرب مثال هو سكربت القران الكريم
    فالبحث في سكربت القران الكريم لن يكون دقيقاً حسب الحرف الا إذا حول الترميز الى العربي.

    جرب الرابط التالي وابحث وأعطني رأيك
    http://www.yoom-a5r.com/quran.php?do=searchform

    موفق






  6. #36
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    سلام عليكم


    اخي العندليب - عمل فعلا رائع .
    ولكن السؤال - هل كل موقع UTF سوف يحوس هالحوسة

    وماذا عن المواقع القديمة التي تود ان تحدث ؟
    ماذا يفعل بالبداية ؟

    يعني الداتا موجودة هل يحدث الى الجديد ومن ثم يطبق السكريبت تبعك ؟
    ام يطبقة قبل التحديث ؟


    ومن ناحية اخرى هل يمكنني ان اتشرف باضافتك لي في قائمة المسنجر ؟

    beshoo
    @ hotmail.com






  7. #37
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    اقول - اضفتك انا






  8. #38
    عضو فعال
    تاريخ التسجيل
    Nov 2005
    المشاركات
    1,283


    السلام عليكم,,

    موضوع رائع ومفيد جداً وبأذن الله سأقرأه ثانياً جيداً بعد انتهاء الاختبارات يوم الخميس





    __________________
    سبحان الله وبحمده ... سبحان الله العظيم.
    إقرأ .. لتتعلم
    [AJAX] سكربت إتصل بنا (ديف كونتاكت) النسخة 2.3.2
    للتواصل ..

  9. #39


    اقتباس المشاركة الأصلية كتبت بواسطة beshoo
    سلام عليكم


    اخي العندليب - عمل فعلا رائع .
    ولكن السؤال - هل كل موقع UTF سوف يحوس هالحوسة
    وعليكم السلام ورحمة الله وبركاته
    اي موقع يريد تحويل ترميز موقعه سواءا كان UTF او غيره سيتعب قليلا في البدايه وللمعلوميه فإن السكربت الذي أرفقته لا يصلح للتحويل الى UTF لانه يتطلب إدخال الـ collation وأنا لم أقم بذلك.

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



    اقتباس المشاركة الأصلية كتبت بواسطة beshoo
    يعني الداتا موجودة هل يحدث الى الجديد ومن ثم يطبق السكريبت تبعك ؟
    ام يطبقة قبل التحديث ؟
    لا يوجد هناك فرق سواءاً بعد أو قبل ولكن إذا تم التحويل يجب إضافة السطرين الأخيره لتعديل الطبقات الخارجيه وطبقة الخادم الى السكربت كالتالي:
    كود PHP:
    mysql_query("set character_set_server='cp1256'");
    mysql_query("set names cp1256"); 

    الاخ -Developer-
    شكرا على تشريفك ووفقك الله لما يحب ويرضى وننتظر تعقيبك.






  10. #40


    متابع بصمت
    لا تعليق حتى هذه اللحظة حتى يتم تطبيقها على منتداي بإذن الله





    __________________
    http://www.vb2plus.com/index.php?action=news&id=12
    أقوى نظام بنرات عرفته المنتديات

  11. #41


    السلام عليكم
    أشكرك أخي العندليب على هذا الموضوع الرائع، لدي ملف sql من قاعدة بيانات قديمة النسخة 4.0 الترميز utf-8 وليس windows-1256 وأريد زرعها في قاعدة بيانات جديدة في حاسوبي الذي يحتوي على نظام ubuntu 6.06 و mysql 5 ، بعد قراءتي للموضوع قمت بإضافة الأسطر التالية إلى my.cnf

    كود:
    default-character-set = cp1256
    [server]
    default-character-set = cp1256
    [client]
    default-character-set = cp1256
    وكانت النتيجة عند زرع الملف أصبحت الجدوال والخلاياcp1256_general_ci وبإمكاني مشاهدة النص العربي في phpMyAdmin أما في برنامجي "المجلة" أضفت سطرين
    كود PHP:
    $GLOBALS['DB']->execute("set character_set_server='cp1256';");
    $GLOBALS['DB']->execute("set names cp1256;"); 
    فظهر النص العربي في الصفحة على هيئة windows-1256. وأنا أريده أن يكون utf-8 حتى يكون متوافقاً مع القوالب، لذا عدلت السطرين السابقين إلى التالي:
    كود PHP:
    $GLOBALS['DB']->execute("set character_set_server='utf8';");
    $GLOBALS['DB']->execute("set names utf8;"); 
    فظهر النص كما أريد مع بقاء القاعدة على ترميز cp1256_general_ci.
    لك جزيل الشكر على إثراءك للموضوع، فقد حللت لي عقدة.





    __________________
    عزوز الحسني

  12. #42
    خبير سيرفرات لينكس
    تاريخ التسجيل
    Mar 1999
    المشاركات
    4,917


    طيب اخوي الصارم سؤال
    لو قمت بادخال بينات من فورم مثلا من صفحة معينة وكانت الهدر تبع الصفحة UTF-8 الن يتم التخزين بالقاعدة UTF-8 ?

    وانت تقول ان البينات تم حفظها 1256 ?

    بالمناسبة عندك مسنجر ؟ :con2:






  13. #43


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





    __________________
    عزوز الحسني

  14. #44


    اقتباس المشاركة الأصلية كتبت بواسطة beshoo
    طيب اخوي الصارم سؤال
    لو قمت بادخال بينات من فورم مثلا من صفحة معينة وكانت الهدر تبع الصفحة UTF-8 الن يتم التخزين بالقاعدة UTF-8 ?

    وانت تقول ان البينات تم حفظها 1256 ?

    بالمناسبة عندك مسنجر ؟ :con2:

    أصبت بارك الله فيك

    الزميل أبو ماجد الصارم
    عليك التركيز على نوع الإرسال ونوع الإستقبال:
    1- إرسال المعلومه الى الخادم ( الإتصال+العميل).
    2- إستقبال المعلومه من الخادم ( النتائج ).

    في ردك السابق كنت قد عدلت كل هذه الطبقات بالأمر التالي:
    كود PHP:
    $GLOBALS['DB']->execute("set names utf8;"); 
    وبالتالي فإن البيانات المرسله منك إلى الخادم (الإتصال+العميل) ستكون Utf8 وسوف تدخل في القاعده بصيغة Utf8
    وهنا سيظهر خلل في عرض البيانات الأخيره التي تم إدخالها وممكن تشاهدها مثل العلامات الغريبه ( ؟؟؟؟؟؟؟؟؟؟؟ ) .
    أما البيانات السابقه فقد تم تحويلها من ترميز cp1256 الى ترميز utf8 بطبقة النتائج.

    في إعتقادي أن طريقة الخلط بين العرض وبين الإرسال بتراميز مختلفه متعبه.

    السؤال المهم هنا:
    كيف ستغير ترميز طبقه واحده من الطبقات الخارجيه ؟
    الجواب :

    تغيير طبقة النتائج فقط بالأمر التالي:
    كود PHP:
    set character_set_results='cp1256'
    تغيير طبقة الإتصال فقط بالأمر التالي:
    كود PHP:
    set character_set_connection='cp1256'
    تغيير طبقة العميل فقط بالأمر التالي:
    كود PHP:
    set character_set_client='cp1256'
    أما بخصوص تعديلك التالي:
    كود HTML:
    [server]
    default-character-set = cp1256
    [client]
    default-character-set = cp1256
    فهذه تعدل 4 طبقات وهي طبقة الخادم ([server]) والطبقات الخارجيه كلها ( [client] ) .
    عند إنشاءك لقاعده جديده لم تحدد ترميزها سيتم وضع ترميز طبقة الخادم عليها والذي قمت بتعديله في تطبيقك السابق على ملف My.cnf وهذا ماحدث معك في ملف النسخه 4.0 الذي لا يحتوي على أي تعليمات لوضع الترميز سواءا للجدول أو الحقل أو حتى القاعده فأصبحت القاعده بالترميز العربي cp1256 وأصبحت البيانات المدخله في القاعده ترميز عربي cp1256 وهذا بسبب تعديلك على الطبقات الخارجيه.


    أشكركم على المداخله.






  15. #45
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    827


    السلام عليكم من جديد ....

    كنت قد طرحت مشاركة سابقا عن التغيير لنظام uft-8 .... و تابعت الموضوع و الردود ....... إلى ان اتى تدخل الأخ bechoo الذي نطق و اخرج شي كنت ٍأقوم بطرحه ،و في كل رد له كان ينوب عني تقريبا في نفس السؤال الذي كنت اود طرحه .....

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

    هذا من جهة الان ادخل لصلب الموضوع .... أغلب السكريبتات العالمية تتجه نحو الترميز العالمي uft-8 ، و طبعا عندما ياتي دور التعريب لهذا السكريبتات يكون علينا في اغلب الظروف تحويل نظام الترميز إلى windows-1256 ..... و بعد مرور الايام و تكدس المعطيات في القاعدة ، يفاجاك أصحاب السكريبت بخاصيات أو بأشياء يتوجب عليك التحويل إلى نظام uft-8 و طبعا تحويل الترميز السكريبت إلى ذلك يؤدي إلى تشوه النتائج و ظهور حروف غريبة و ...... و يكون الحل ، إما إعادة الموقع من الصفر بالترميز utf-8 أو الاستمرار في windows-1256 و هذا يؤدي إلى بقائنا في النظام القديم ... و نحن نريد ان نتطور و نساير كل المستجدات ....

    طرحت سكريبت و تجاهلت فيه uft-8 .... لي رجاء سكريبت تغيير النظام من windows-1256 إلى utf-8 ....
    أرجوا الإفادة في الموضوع لانه موضوع سيغير أشياء كثيرة و سيجعلنا نستريح من عقدة التحويل للترميز uft-8 ...


    كنت قد طرحت مسبقا كود مبدئي للتحويل وهو نفس الكود الذي اعتمدت عليه في التحويل ، لكن ينقصني شيء او حلقة لا أعرف ما هي ... قد أكون أهدف إلى نظام مغير للنظام الذي تدعوا له ، لكن هذه متطلبات خاصة و أهمية و كما قلت لك اغلب السكريبتات العالمية الان تعتمد نظام utf-8 و لا تريد الخوض في مسألة النظام القديم و هذا يجعلنا في إحدى الجوانب اشخاص متاخرين عن الركب .....





    __________________
    لا تطمعن في كرم من غرته شهرته ، فقد نسي انه بالأمس نجح بكرم الاخرين
    e107 المعربة www.e107arabic.org
    شبكة الباتشات و السوفتوير www.all-patch.org
    شركة استضافة مغربية www.naja7host.com





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

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

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