Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 阿拉伯语文本未保存在数据库中_C#_Asp.net_Sql Server_Arabic - Fatal编程技术网

C# 阿拉伯语文本未保存在数据库中

C# 阿拉伯语文本未保存在数据库中,c#,asp.net,sql-server,arabic,C#,Asp.net,Sql Server,Arabic,当我通过文本框输入并存储在数据库中时,如: "Under ( امارات .) english" 那么实际存储的是什么: "Under ( ??.?????.) english" 甚至我也使用数据类型作为nvarchar(Max)。如何解决它?请尽快回答我。谢谢。试试“Unicode数据” N'Under ( امارات .) english' 而不是简单的 'Under ( امارات .) english' 当您插入数据时。这里N的意思是全国性的。希望这能解释为什么需要将其存

当我通过文本框输入并存储在数据库中时,如:

"Under ( امارات .) english"
那么实际存储的是什么:

 "Under ( ??.?????.) english"
甚至我也使用数据类型作为nvarchar(Max)。如何解决它?请尽快回答我。谢谢。

试试“Unicode数据”

N'Under ( امارات .) english'
而不是简单的

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

当您插入数据时。这里N的意思是全国性的。

希望这能解释为什么需要将其存储为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

选择projectname,然后右键单击proparties,然后设置,然后选择连接字符串单击列值,然后选择。。。。屏幕连接程序将出现在此屏幕上选择高级,然后选择字符,然后选择wright utf8,然后选择将BLOB视为utf8将值更改为true所有阿拉伯数据将传输到我的sql

就这样。(我刚刚复制并粘贴了这个评论文本框中的文本,效果很好)。也许你需要重新表述你的问题?是的,它正在起作用。但现在发生的情况是:当在网格中显示时,我收到的是相同的“?”,而不是阿拉伯语文本。请在数据库表中检查实际保存的内容。对于特殊字符或语言,如阿拉伯语、马拉地语、印地语等,您必须在数据库中使用nvarchar数据类型。是的,即使在我的数据库中也是如此?“?”正在保存,我已使用nvarchar(MAX)数据类型。如果我直接在数据库中输入阿拉伯语文本,这样它就可以工作了,但是当从textbox输入并保存在表中时,我会得到这个垃圾文本,你能给出使用代码从textbox“获取”文本并将信息存储在数据库中吗?我猜在这一行的某个地方(很可能在INSERT语句中),您正在隐式转换数据。在我的数据库中,默认的排序规则是:“SQL\u Latin1\u General\u CP1\u CI\u AS”,这是非unicode的。我在文本框中使用了N'Under(Under)(Under)(Under)(Under)english)并保存,现在它实际上保存为N'Under(???)english'。但我还是遇到了问题:否,尝试这样做
插入员工值(N'ديتا',…)
,更多信息:否,实际上我正在使用LinqtoSql进行数据库。我只是使用insertonsubmit()来插入数据。如何将该语句放在那里?L2S会自动将该N添加到最终生成的SQL中,与EF相同。将数据类型更改为
nvarchar
,然后更新VS.NET中的映射以反映这些更改。