我试图在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'لا أتكلم العربية')
注意上面的insert语句中的N值。如果您没有提及它,系统会将值视为Varchar,而不是NVarchar。
SELECT * FROM #test
返回
col1 col2 col3
------------------------------ ------------------------------ ------------------------------
?? ????? ??????? لا أتكلم العربية لا أتكلم العربية
要查看阿拉伯语排序规则列表,请使用
SELECT name, description
FROM fn_helpcollations()
WHERE name LIKE 'Arabic%'
您可以更改数据库级别的排序规则,而不是更改数据库中的每个列:
USE master;
GO
ALTER DATABASE TestDB
COLLATE Arabic_CI_AI;
GO
插入表(列)值(N'xxx')。)
您应该在字符串前面加上N以使其成为unicode
确保所有表格和varchar
列都有utf8_general_ci
的排序规则
列数据类型是nvarchar()
INSERT INTO CompanyMaster值(N'“+ txtCompNameAR.Text +”',N'“+ txtCompAddressAR.Text +”','“+ txtPh.Text +”')
Iti很容易在Oracle中存储阿拉伯字符串。使用此代码:
declare @P_CUSTOMER_NAME nchar(50)
set @P_CUSTOMER_NAME2=N'أختبار'
以上将在Oracle中保存得很好。