Хранить арабский в базе данных SQL

Я попытался сохранить арабскую строку в базе данных SQL 2008, но она была преобразована в "вопросительный знак", почему? и что мне делать?

Ответы

Ответ 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 просто отлично.