Я попытался сохранить арабскую строку в базе данных SQL 2008, но она была преобразована в "вопросительный знак", почему? и что мне делать?
Хранить арабский в базе данных SQL
Ответ 1
Вам нужно выбрать арабское сопоставление для ваших столбцов 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
Возвращает
col1 col2 col3
------------------------------ ------------------------------ ------------------------------
?? ????? ??????? لا أتكلم العربية لا أتكلم العربية
Чтобы увидеть список арабских сопоставлений, используйте
SELECT name, description
FROM fn_helpcollations()
WHERE name LIKE 'Arabic%'
Ответ 2
Все, что вам нужно сделать, это убедиться, что
column Data type
- nvarchar()
после этого я вставил арабский язык без проблем
Ответ 3
Вы можете изменить настройку на уровне базы данных вместо изменения для каждого столбца в базе данных:
USE master;
GO
ALTER DATABASE TestDB
COLLATE Arabic_CI_AI;
GO
Ответ 4
вставить в значения таблицы (столбца) ( N 'xxx').)
Вы должны поместить N перед строкой, чтобы сделать ее unicode
Ответ 5
убедитесь, что все ваши таблицы и столбцы varchar
имеют параметры сортировки utf8_general_ci
Ответ 6
Iti легко хранить арабскую строку в Oracle. Используйте этот код:
declare @P_CUSTOMER_NAME nchar(50)
set @P_CUSTOMER_NAME2=N'أختبار'
Вышеупомянутое сохранит в Oracle просто отлично.