2013-09-30 65 views
0

當我通過文本框使輸入和數據庫一樣存儲:阿拉伯文字是沒有得到保存在數據庫

"Under (امارات .) english" 

所以什麼是真正獲得存儲:

"Under (??.?????.) english" 

即使我已經使用的數據類型作爲nvarchar(Max)。如何解決它?請儘快回答我。謝謝。

+1

適用於SO。 (我只是複製並粘貼在這個評論文本框中的文本,它的工作原理)。也許你需要重新說明你的問題? –

+0

是的,它工作。但現在發生了什麼:在網格中顯示時,我接收到相同的「??」。代替阿拉伯語文本 –

+1

請檢查數據庫表中實際保存的內容。對於特殊字符或阿拉伯語,馬拉地語,印地語等語言,您必須在數據庫中使用nvarchar數據類型。 – siddhesh

回答

1

嘗試N'Unicode數據」

N'Under (امارات .) english' 

,而不是簡單的

'Under (امارات .) english' 

當你插入數據。這裏的N代表國民。

+0

是在我的數據庫默認排序是:「SQL_Latin1_General_CP1_CI_AS」這是非Unicode。我在文本框中使用了N'Under(امارات。)english',現在保存它實際上保存爲N'Under(??????。)english'。仍然我得到問號 –

+0

不,試試這種方式INSERT INTO Employees VALUES(N'ديتا',...)',更多信息:http://databases.aspfaq.com/general/why-do-some -sql-strings-have-an-n-prefix.html – VahidN

+0

實際上我沒有爲數據庫使用LinqtoSql。我只是使用insertonsubmit()來插入數據。如何把這個陳述放在那裏? –

1

希望這揭示了爲什麼你需要存儲此爲Unicode(* N * VARCHAR)一些光[由VahidN的建議]爲什麼這絕對沒有做排序規則(如(是)其他地方的建議)

試試下面的代碼:

CREATE TABLE t_test (
         txt  varchar(1000) COLLATE Latin1_General_BIN, 
         arabic varchar(1000) COLLATE Arabic_100_CI_AI_KS_WS, 
         chinese varchar(1000) COLLATE Chinese_Simplified_Pinyin_100_CI_AI, 
         ntxt  nvarchar(1000) COLLATE Latin1_General_BIN, 
         narabic nvarchar(1000) COLLATE Arabic_100_CI_AI_KS_WS, 
         nchinese nvarchar(1000) COLLATE Chinese_Simplified_Pinyin_100_CI_AI,      
        ) 
GO 
INSERT t_test (txt, arabic, chinese, ntxt, narabic, nchinese) 
VALUES ('Under (امارات .) english', 
     'Under (امارات .) english', 
     'Under (امارات .) english', 
     N'Under (امارات .) english', 
     N'Under (امارات .) english', 
     N'Under (امارات .) english') 

SELECT * FROM t_test 
1

選擇項目名稱,然後點擊右鍵,然後proparties然後設置,然後選擇列值的字符串conniction點擊然後選擇....屏幕連接proparties將在屏幕上出現選擇高級,然後選擇字符然後選擇utf8將blob視爲utf8將值更改爲true,所有阿拉伯數據都將t轉移將我的SQL。