хранить арабский в базе данных SQL - PullRequest
22 голосов
/ 24 августа 2010

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

Ответы [ 7 ]

51 голосов
/ 25 августа 2010

Вам нужно выбрать арабский порядок сортировки для ваших столбцов 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%'
12 голосов
/ 01 августа 2016

Все, что вам нужно сделать, это убедиться, что

column Data type является nvarchar()

enter image description here

после этого я без проблем вставил арабский

enter image description here

5 голосов
/ 06 июля 2015

Вы можете изменить параметры сортировки на уровне базы данных вместо изменения для каждого столбца в базе данных:

USE master;
GO
ALTER DATABASE TestDB
COLLATE Arabic_CI_AI;
GO
3 голосов
/ 31 марта 2016

вставить в таблицу (столбец) значения ( N 'xxx').)

Вы должны поставить N перед строкой, чтобы сделать ее Юникод

0 голосов
/ 29 мая 2019

столбец Тип данных nvarchar ()

INSERT INTO значения CompanyMaster (N '"+ txtCompNameAR.Text +"', N '"+ txtCompAddressAR.Text +"', '"+ txtPh.Text +"')

0 голосов
/ 27 февраля 2018

убедитесь, что все ваши таблицы и столбцы varchar имеют параметры сортировки utf8_general_ci

0 голосов
/ 21 мая 2012

Iti легко хранить арабские строки в Oracle. Используйте этот код:

declare @P_CUSTOMER_NAME  nchar(50) 
set @P_CUSTOMER_NAME2=N'أختبار'

Вышесказанное сохранит в Oracle просто отлично.

...