2010-08-24 72 views
15

我試圖在SQL 2008數據庫中存儲阿拉伯文字符串,但它轉換爲「問號」爲什麼?我該怎麼辦?在SQL數據庫中存儲阿拉伯語

+0

對照爲它MySQL數據庫或我的SQL數據庫? – Kashif 2010-08-24 19:27:12

+0

sql 2008數據庫不是我的sql對於這種語法錯誤感到抱歉 – kartal 2010-08-24 19:31:55

+0

您是否試圖在類型爲'(var)char'或'n(var)char'的列中存儲阿拉伯字符? – 2010-08-24 19:38:58

回答

43

你需要選擇你的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'لا أتكلم العربية') 

SELECT * FROM #test 

返回

col1       col2       col3 
------------------------------ ------------------------------ ------------------------------ 
?? ????? ???????    لا أتكلم العربية    لا أتكلم العربية 

要查看阿拉伯語的歸類列表使用

SELECT name, description 
FROM fn_helpcollations() 
WHERE name LIKE 'Arabic%' 
+0

非常感謝你這麼多 – kartal 2010-08-24 23:15:06

+3

你真棒!非常感謝!我將把你的答案添加到我的博客。 – 2012-11-12 20:22:22

+0

使用Unicode數據類型(nchar/nvarchar)就夠了,非常感謝Martin – newComer 2013-10-21 00:19:34

-6

ITI公司是很容易阿拉伯語字符串存儲在Oracle中。使用此代碼:

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

上面將保存在Oracle中就好了。

+1

你的答案爲什麼提到Oracle? – Ben 2012-10-20 12:14:28

+2

@Akram,請閱讀這個問題。 – Storm 2013-01-28 10:05:25

1

可以更改數據庫級別,而不是改變在數據庫中的每一列的排序規則:

USE master; 
GO 
ALTER DATABASE TestDB 
COLLATE Arabic_CI_AI; 
GO 
2

插入到表(列)的值(Ñ「XXX」))

你應該填入N字符串之前,使其的unicode

6

所有你所要做的就是確保

column Data typenvarchar()

enter image description here

之後我插入阿拉伯語,沒有任何問題

enter image description here

0

確保所有的表格和varchar列有utf8_general_ci