Как хранить арабский язык в SQL-сервере?
Я пытаюсь сохранить арабские строки в моей базе данных. он работает нормально с помощью COLLATE Arabic_CI_AI_KS_WS
но в некоторых арабских записях отсутствуют некоторые арабские алфавиты. Я попытался с другим Sollate, но результат, как то же самое. как это исправить?структура таблицы:
CREATE TABLE [dbo].[Ayyat_Translation_Language_old_20131209] (
[Ayat_Translation_Language_ID] INT IDENTITY (1, 1) NOT NULL,
[Translation_Laanguage_ID] INT NULL,
[Juz_ID] INT NULL,
[Surah_ID] INT NOT NULL,
[Ayat_Description] VARCHAR (2000) COLLATE Arabic_CI_AI_KS_WS NOT NULL
)
код вставки:
string query = "insert into Ayyat_Translation_Language_old_20131209 values(null,null," + surah + ",N'" + verse + "')"; where verse contains Arabic contents.
и это хранит данные как это (с вопросительными знаками):
?بِسْمِ اللَّهِ الرَّحْمَ?نِ الرَّحِيمِ
Я прочитал эту ссылку: хранить арабский язык в базе данных SQL
4 ответа
Для хранения строковых данных Unicode используйте NVARCHAR(2000)
скорее, чем VARCHAR(2000)
для столбца [Ayat_Description]
Ссылка: нчар и нварчар
Все, что вам нужно сделать, это убедиться, что
column Data type
является nvarchar()
после этого я вставил арабский без проблем даже с Tashkeel
это в SQl server management studio 2012
Может помочь
CREATE TABLE [dbo].[Ayyat_Translation_Language_old_20131209] (
[Ayat_Translation_Language_ID] INT IDENTITY (1, 1) NOT NULL,
[Translation_Laanguage_ID] INT NULL,
[Juz_ID] INT NULL,
[Surah_ID] INT NOT NULL,
[Ayat_Description] NVARCHAR (2000) COLLATE Arabic_CI_AI_KS_WS NOT NULL
Использование arabic collation
или же use unicode(nvarchar(max))
Это пример таблицы для вашего ответа:
CREATE TABLE #t11
(
column1 NVARCHAR(100)
)
INSERT INTO #t11 VALUES(N'لا أتكلم العربية')
SELECT * FROM #t11