Я пытался сохранить арабскую строку в базе данных SQL 2008, но она была преобразована в «знак вопроса», почему? и что мне делать?
Вам нужно выбрать арабскую сортировку для столбцов varchar / char или использовать Unicode (nchar / nvarchar)
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'لا أتكلم العربية')
Обратите внимание на N перед значениями в инструкции вставки выше. Если вы не укажете это, система будет обрабатывать значения как Varchar, а не NVarchar.
SELECT * FROM #test
Returns
col1 col2 col3
------------------------------ ------------------------------ ------------------------------
?? ????? ??????? لا أتكلم العربية لا أتكلم العربية
Чтобы увидеть список сопоставлений для арабского языка, используйте
SELECT name, description
FROM fn_helpcollations()
WHERE name LIKE 'Arabic%'