0

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

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

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

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

4

2 回答 2

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,我错过了那个标签)。

于 2012-08-15T00:19:36.520 回答
-1

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

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

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

还要确保尝试 nvarchar 或 unicode

于 2012-08-15T00:21:14.657 回答