حل مشكلة ظهور الحروف العربية على شكل علامات استفهام في SQL Server


السلام عليكم ورحمة الله وبركاته، مشكل الترميز في نظام إدارة قواعد البيانات SQL Server 2008 يتسبب أحيانا في إظهار الكتابات العربية على شكل علامات استفهام لأن الترتيب الافتراضي  Collation لا يدعم ترميز الحروف العربية، وبالتالي وجب تغيير نمط الترتيب واختيار أحد الأنماط الداعمة للغتنا، وهذه صورة للمشكلة:

حل المشكلة

قد تبحث على النت فتجد طرقا كثيرة جدا لكنها ستستنزف وقتك وأحيانا لن تفي بالغرض لأنك قد تواجه مشاكل قاعدة البيانات أحادية ومتعددة الاستخدام  Single_User and Multi-User Modes أو مشاكل أخرى، لذلك ارتأيت أن أختصر عليك الجهد في أسطر ثلاثة إذا قمت بنتفيذها ستنتهي مشكلة الترميز.
قم بإضافة محرر استعلامات جديد:

الآن قم بنسخ الأوامر التالية في محرر الاستعلامات ثم اضغط على زر التنفيذ Execute أو اضغط على الزر F5، مع الأخذ بعين الاعتبار تغيير اسم قاعدة البيانات إلى إسم قاعدة البيانات الخاصة بك:

USE master
ALTER DATABASE YourDatabaseName SET SINGLE_USER;
ALTER DATABASE YourDatabaseName COLLATE Arabic_CI_AS;
ALTER DATABASE YourDatabaseName SET MULTI_USER;


شرح الأوامر

في السطر الأول حددنا قاعدة البيانات الرئيسية master التي استخدمناها من أجل تنفيذ أوامر تغيير الترميز.
في السطر الثاني قمنا بتغيير وضع الاتصال بقاعدة البيانات التي نريد تحويل ترميزها إلى الوضع الأحادي SINGLE_USER، ثم في السطر الثالث قمنا بتغيير ترتيب الترميز إلى اللغة العربية Arabic_CI_AS، وفي السطر الأخير قمنا بإرجاع قاعدة البيانات إلى الوضع المتعدد MULTI_USER.
علما أنه توجد مجموعة من الأنماط الأخرى الداعمة لغة العربية حسب البلدان العربية ويمكنك الاطلاع عليها من خلال عمل Right Click على قاعدة البيانات ثم اختيار Properties، بعد ذلك ادخل على التبويب Options، ستظهر لك قائمة منسدلة إلى جانبها Collation قم بالدخول إليها وستجد مجموعة من الترميزات العربية حسب البلدان العربية وكلها تبدأ بالمقدمة Arabic.


ملاحظة

الطريقة التي رأيناها فعالة جدا إذا قمنا بها قبل إنشاء الجداول، أما إن كانت الجداول منشأة مسبقا فقد لا تتأثر بعملية تغيير ترميز الحروف Collation، لذلك وجب في حالة بقاء الخلل في الجداول الموجودة مسبقا أن تقوم بفتح الجدول في وضع التعديل Design Mode، ثم تحدد الحقل الذي تريد تخزين قيم عربية داخله وتذهب إلى خصائصه وتعدل الخاصية Collation التابعة له وبهذا ينتهي المشكل جذريا (عملية تعديل ترميز الحقل كما يلي):


في حفظ الله ورعايته.


هناك 33 تعليقًا:

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

    حبيبي يا استاذ خالد ووالله اني قد استحيت ان اسألك عن هذة المشكلة
    بس الحمد لله انني تصفحة المدونة قبل السؤال

    ردحذف
    الردود
    1. حياك الله وبياك أخي حسن.

      حذف
    2. كيف انشئ محرر نص بالخطواط لاني مبتدئ

      حذف
  2. السلام عليكم ورحمة الله وبركاته
    حفظك الله وجزاك الله كل خير

    ردحذف
    الردود
    1. وعليكم السلام ورحمة الله وبركاته،
      ولكم بالمثل أخي الفاضل أكرم.

      حذف
  3. السلام عليكم ورحمة الله وبركاته
    حفظك الله وجزاك الله كل خير

    ردحذف
    الردود
    1. وعليكم السلام ورحمة الله وبركاته،
      ولكم بالمثل أخي الفاضل يحيى.

      حذف
  4. طيب اخي خالد السعداني ... عندي مشكلة نفس مشكلة ذي لكن مش في sql server عندي المشكلة في المفكره ... ابغى مساعدتك

    ردحذف
    الردود
    1. حياك الله أخي سلمان،
      في المفكرة يمكنك تغيير ترميز الكتابة Encoding.
      إن كنت تستخدم المفكرة الافتراضية Notepad المرفقة مع الويندوز فعليك تحديد الترميز أثناء حفظ الملف.
      وإن كنت تستخدم مفكرة Notepad++ فيمكنك تعديل الترميز من القائمة Encoding واختر إحدى الترميزات الأحادية Unicode Encoding مثل UTF-8

      حذف
  5. مرحبااا اخي العزيز لدية مشكلة ف xml كانت كاتبتي هنا إنكليزي والان أصبحت هكذا ما هو الحل اروج المساعد وشكراا

    ضمخNqWے”çï‎گéٌ÷qùہ<&¬]فژ'چîظز”ص»gش—T«UثD©ش_!x‚ïni;‹5¤(4ط_§€ةِk
    .حY__×–
    h¬m´_حcثاN°_ئھvٹ__B§ماy&حQ£j*ھhlىزز_&ش_50ھ\-
    _-Foشا°ظœب¢+_k~_¥j×__µ@*•ـH6ژ–d
    Hقàم‹هأ€_،sآ‡ئ=-E_«حٹة2Mm¬غاv¹*wج؟
    _ چ’L»„•¶_Z`إ¥%_ˆµت±lc±ٹvإ¾Y]H#µLŒ“²;7o<¢م-|…érد‹'دxِر ¼ے‎؟نٌ_‎G?ءظù)'÷¶œ°ع_µ¸8G_a¤_ْ^ے{ت”85_…رىأر 6ھچ¢¥=H_R9مµ1>dJl*س_ع_¼_ë]ë_«__K£د€(_7s»'+E-_yF¤`©ˆر‹Gة__:ً_)M¤42œ¯9ے'؟‡؟خَûû¼ِّ`u=ٍ_u®بظ)إ؟إü£÷9\¼ؤقدœ_ء”آکfxxئêô„ْü’ùé
    |è±%Sw;D_²ز(¬\Uنصُ_د_?ههث_

    ردحذف
    الردود
    1. حياك الله أخي عمار، في ملف XML الذي تشتغل عليه ضع في Prolog ترميز الملف وليكن أحاديا Unicode كما يلي:
      "xml version="1.0" encoding="UTF-8

      إن كنت تشتغل في Notepad++ سيبقى المشكل لكن قم بحله عبر تغيير الترميز من القائمة Encoding واختر بدل الترميز الافتراضي ترميزا أحاديا وليكن مثلا UTF-8 أو UTF-16...
      بالتوفيق والسداد أخي الفاضل.

      حذف
  6. شكرا لك اخي الفاضل على هذه المعلومة ولكني اريد ان اضيف ايضا حل اخر غاية في السهولة لحل مشكلة الترميز وهو اضافة حرف N امام الحقول النصية في جمل الأستعلام .. بمعني
    SELECT user_id ,Lang_id,'N'user_firstName,'N'user_LastName,'N'user_fullName FROM Users
    لاحظ هنا انا وضعت حرف ال N امام الحقول ذات ال type النصي اما الحقول ذات ال type الرقمي (int) فلا حاجة لوضع حرف ال N قبلها لانها ارقام .. وشكرا ..

    ردحذف
  7. السلام عليكم ورحمة الله
    جزاك الله خيرا اخي الكريم
    عندما أحاول تغيير Collation للخانة التيي تظهر فيها هذه المشكلة واقوم بطلب الحفظ من sql تظهر لي رسالة أنه غير قادر على التعديد ولا بد أن أقوم بعمل Drop للجدول و Recreated وهذا لا يمكن لوجود داتا وبريمري كي عليه

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

    ردحذف
  9. السلام عليكم ورحمة الله وبركاته اخي خالد جزاك الله عنا كل الخير ان شاء الله
    في الحقيقة لدي مشكل بخصوص ما نشرت .
    لقد واجهتني هذه المشكلة عندما قمت بانشاء قاعدة بيانات بواسطة برنامج sql server 2008
    قمت بانشائها باللغة العربية وانتهيت منكل شيء ثم قمت بالحفظ .
    وثم ذهبت الي الدلفي 10 وقمت بربطها بالطريقة السليمة وكما ينبغي .
    الان نصل الي المشكلة يا اخي !! :P
    عندما ادرج ال dbgreed وهي كائن الجدول في الدلفي واربط اتصل بقاعدة البيانات تضهر تلك الرموز في البرنامج .
    حاولت الحل ولكن للاسف فانا جديد في الميدان يا صديقي ارجوا لك التوفيق والسداد ان شاء الله .
    البتمس الرد القريب .
    والسلام عليكم

    ردحذف
  10. السلام عليكم ورحمة الله وبركاته
    كيفك اخوي خالد
    اخوي عندي ملف على فجول ستديو يعرض لي بيانات المخزنه
    واذا فتحت الملف هذا يعرض لي رموز غريبه ومايعرض لي البيانات
    مع العلم ان نظامي وندوز 8 وفجول ستديو 2010
    اتمنى ان استفيد من خبرتك وشكرا

    ردحذف
  11. اولا جزاك خيرا
    ثانيا انا عندى مشكلة فى ان البرنامج عندما اعطيه قيم فى الجمل الشرطية(where)
    وهذه القيم تكون عربى ما بيعطينى نتيجة نهائى الرجاء الافادة وجزاكم الله خيرا....

    ردحذف
  12. شكرا جزيلا معلومة جدا مفيدة.
    لكن لماذا تحصل هذه الحالة؟ وكيف تستطيع تجاوزها عند التنصيب؟؟

    ردحذف
  13. بارك الله فيك أستاذي العزيز.

    ردحذف
  14. أزال المؤلف هذا التعليق.

    ردحذف
  15. مشكله فى الكريستال ريبورت عند طباعة الكلمات باللغة العربية تظهر معكوسه فى الطباعة فقط

    ردحذف
  16. السلام عليكم أخى خالد بداية شكرا لك على ما تقدمه لنا من علمك سؤال كيف يمكن استخدام الباركود Datagridview فى لغة السى شارب بحيث عندما يظهر الباركود الخاص بالصنف فى الخلية الأولى من Datagridview تظهر باقى بيانات الصنف فى باقى خلايا Datagridview فى نفس Row من Datagridview

    ردحذف
  17. اخي الافاضل استاذ خالد اشون احل البيانات في قتعدة بيانات فيجول ستوديو هي نفس SQL هم ما يشتغل البيانات هم تعمل على شكل الاستفهام
    اذا اكو حل اريدها يا استاذ الله يرحم ابوك

    ردحذف
  18. اكو sql في فيجول ستوديو هم تظهر البيانات على شكل الاستيغهام اريد حل الله يرزقك بالجنة يا استاذ
    الله يرزقك ب الجنة مع حبيب الله محمد (ص)

    ردحذف
  19. مشكور جدا جدا
    شرحك واضح جدا وجميل ما شاء الله ...
    جزاك الله خيرا وأثابك على كل عمل طيب تفيدنا به !

    ردحذف
  20. من فضلك الاستاذ خالد لدي مشكل عند رفع إضافات في اللقالب الذي نصبته على وورد برس هل من حل، وورد برس خطا على الشكل:
    ____________الملف المرفوع يتجاوز الحد الأقصى المحدد لهذا النوع من الملفات المتواجد في ملف php.ini._________________

    ردحذف
  21. جزاك الله خير استاذ

    ردحذف
  22. السلام عليكم و رحمة الله و بركاتة

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

    لاكن عند الاستعلام و جلب البيانات و عرضها في الحقول في الشاشة تظهر على شكل رموز ؟؟؟ استفهام
    استخدم فيجول استوديو 2015 vb.net مع قاعدة بيانات اوركل
    استخدم الوسيط OleDb
    و شكرا

    ردحذف
  23. السلام عليكم و رحمة الله و بركاتة

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

    لاكن عند الاستعلام و جلب البيانات و عرضها في الحقول في الشاشة تظهر على شكل رموز ؟؟؟ استفهام
    استخدم فيجول استوديو 2015 vb.net مع قاعدة بيانات اوركل
    استخدم الوسيط OleDb
    و شكرا

    ردحذف
  24. السلام عليكم
    عندما ادخل البيانات من C# to sql server تظهر على شكل علامة استفهام
    اما اذا ادخلت البيانات من قاعدة البيانات نفسهة تظهر باللغ العربية
    وكيفية نقل المشروع مع قاعدة البيانات من حاسوب الى حاسوب اخر بدون حدوث اي مشاكل في الحاسوب الاخر
    الرجاء الافادة
    وشكرا

    ردحذف
    الردود
    1. عليكم السلام ورحمة الله وبركاته اخي عند انشاء قاعدة البيانات في ال SQL SERVER اضغط كلك ايمن على قاعدة البيانات تظهر قائمة اختر منها PROPERTIES تظهر نافذة اختر منها OPTIONS في العنوان Collation اختر الاختيار ARABIC_100_CI_AI_KS_WS_SC ثم OK وبعدها قم بانشاء الجداول تحل عندك مشكلة علامات الاستفهام باذن الله ، اما بالنسبة لمشكلة نقل البرنامج اعتقد ان الفيديو رقم 62 في دورة المبيعات يشرح عملية التحزيم والفيديو 63 يشرح طريقة انشاء نسخة تنفيذية من البرنامج باستخدام SETUP FACTORY وفي ادناه روابط الفيديوهات مع التقدير :
      https://www.youtube.com/watch?v=OmVBSlilF5U&index=62&list=PLwj1YcMhLRN2Y5O_olVfMT7dFe-INcWQT

      https://www.youtube.com/watch?v=AuNgO_Q_2BY&index=63&list=PLwj1YcMhLRN2Y5O_olVfMT7dFe-INcWQT

      حذف