Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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# Unicode在Linq To Sql上显示不正确_C#_Sql Server 2008_Unicode_Linq To Sql - Fatal编程技术网

C# Unicode在Linq To Sql上显示不正确

C# Unicode在Linq To Sql上显示不正确,c#,sql-server-2008,unicode,linq-to-sql,C#,Sql Server 2008,Unicode,Linq To Sql,我的ASP.NET网站有一个Linq To Sql数据库,该数据库通过连接字符串连接到Sql 2008数据库。 在本地,当使用MDF文件时,一切正常。我有一个“加载器”方法,通过文件循环(只有一次,通过管理面板),解析它们并添加到数据库中。它们包含Unicode希伯来文文本。我是在当地做的。然后,我的本地网站会将正确的Unicode希伯来语字符打印到HTML文档中。我的整个网站都是希伯来语。 使用共享主机提供商提供的连接字符串,将SQL DB(无数据!)转储到SQL,在服务器上执行并从文件中加载

我的
ASP.NET
网站有一个
Linq To Sql
数据库,该数据库通过连接字符串连接到Sql 2008数据库。
在本地,当使用
MDF
文件时,一切正常。我有一个“加载器”方法,通过文件循环(只有一次,通过管理面板),解析它们并添加到数据库中。它们包含Unicode希伯来文文本。我是在当地做的。然后,我的本地网站会将正确的Unicode希伯来语字符打印到HTML文档中。我的整个网站都是希伯来语。

使用共享主机提供商提供的连接字符串,将SQL DB(无数据!)转储到
SQL
,在服务器上执行并从文件中加载,我开始看到问号(??),而不是希伯来文字符(网站本身,希伯来文显示正确)。SQL数据库具有
text
类型字段。

更有趣的是,在显示问号(!)之前,它已经正常工作了一段时间。

我怎样才能使希伯来文字符正确显示?谢谢大家!

SQL server中的数据类型表示:

服务器代码页中的可变长度非Unicode数据,最大字符串长度为2^31-1(2147483647)。(强调矿山)

因此,由于GoDaddy在服务器上的代码页与您的不同,unicode字符被破坏了<代码>文本从来就不应该包含unicode。
你需要改用


正如DJ Kraze正确指出的,在字符串前面加上前缀可能也是必要的(我认为这可能有助于添加解释)。但是,因为您使用的是LINQ to SQL,所以在您的情况下,这不是问题所在(good catch@Jon Hanna,我错过了这个标签)。

下面是一个很好的示例/解释,可能会有所帮助

您可以在字符串开头使用N来解决问题,如下所示,这是一个如何使用“N”的示例


另外,如果您必须更新现有数据库,请务必尝试使用nvarchar或unicode,您可能会发现
ntext
nvarchar(max)
更容易转换,不过请先尝试codesparkle的建议,因为它在很多方面都更好。避免使用文本、varchar和char作为人类的真实文本(后两种代码对于机场代码、国家代码和其他对计算机来说比人类更重要的代码都适用)。它们的存在只是因为它们需要提供与20世纪80年代的东西的兼容性。非常感谢。在这次修改之后,它开始工作了(尽管我仍然不明白为什么它在本地工作)。不客气。我假设您的操作系统配置为使用希伯来语代码页,因此文本保存正确(而不是Unicode)。但是GoDaddy服务器将被配置为使用ANSI代码页(例如),它们使用LINQtoSQL。这将在已经有n-*数据类型的情况下为他们完成。请至少复制90%的答案。
 string Status_Update = "UPDATE global_status SET  title = '" +
 Title + "', info =N'" + Info + "'  WHERE id = '" +
 Request.Form["Some_Key"] + "'";