2013-09-30 66 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。