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

لحل مشكلة ظهور علامات الاستفهام عند تخزين الحروف العربية في قاعدة بيانات من نوع SQL Server يكون بسبب أن قاعدة البيانات (SQL Server) أو الجدول (Table) أو الحقل (Filed) يكون من النوع الذي لا يسمح بتخزين حروف عربية، أو بصيغة أخرى أن نوع صفحة المحارف (Collation) لا تدعم النظام العربي في تخزين وعرض وترتيب الحروف العربية.

إذا كانت قاعدة البيانات جديدة يمكن إختيار نظام (Collation) يدعم اللغة العربية مثل (Arabic_CI_AS) أو الأحدث (Arabic_100_CI_AS)، وهو يقوم بمعاملة الحروف العربية بطريقة صحيحة تماماً، وإذا كانت قاعدة البيانات تم تكوينها مسبقاً فيمكن تعديل الجدول (Table) أو الحقل (Field) ليتبع هذه المحارف، والتغيير سهل جداً من خلال مدير قواعد البيانات (SSMS)، كما أنه إذا كانت قاعدة الببيانات على نظام (Windows Server) يدعم اللغة العربية فإن الأمر يكون أسهل.

في حالة أن قاعدة البيانات موجودة على مستضيف (Windows Hosting) أجنبي فإنه يمكنك كذلك تعديل نظام (Collation) وإختيار نوع الحقل (Unicode) وإستخدام تخزين المتغيرات بحرف (N) وهو يعني تخزين القيمة كما هي مكتوبة تماماً، وهذا المثال يوضح أكثر:

CREATE TABLE #test
(
col1 VARCHAR(100) COLLATE Latin1_General_100_CI_AI,
col2 VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS,
col3 NVARCHAR(100)
)


INSERT INTO #test VALUES(N'لا أتكلم العربية',N'لا أتكلم العربية',N'لا أتكلم العربية')
SELECT * FROM #test

Source

This entry was posted in Developer, My Life, SQL2008 and tagged , , , . Bookmark the permalink.

التعليقات مغلقة