在Linq-To-Sql上,Unicode显示不正确

时间:2012-08-15 00:15:12

标签: c# sql-server-2008 unicode linq-to-sql

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

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

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

如何正确显示希伯来字符?谢谢!

2 个答案:

答案 0 :(得分:2)

SQL Server中的text数据类型表示:

  

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

因此,由于GoDaddy在服务器上的代码页与您的代码页不同,因此unicode字符会被破坏。 text从未打算包含unicode 您需要改为使用nvarchar(max)

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

答案 1 :(得分:-1)

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

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

 string Status_Update = "UPDATE global_status SET  title = '" +
 Title + "', info =N'" + Info + "'  WHERE id = '" +
 Request.Form["Some_Key"] + "'";

还要确保尝试使用nvarchar或unicode