我的ASP.NET
网站有一个Linq-To-Sql
数据库,其连接字符串连接到SQL 2008数据库。
在本地,当使用MDF
文件时,一切正常。我有一个“加载器”方法,循环文件(只有一次,通过管理面板),解析它们并添加到数据库。它们包含Unicode希伯来语文本。我在当地做过这个。然后,我的本地网站会将正确的Unicode希伯来字符打印到HTML文档中。 我的整个网站都是希伯来语。
使用我的共享主机提供商提供的连接字符串,将SQL DB(没有数据!)转储到sql
,在服务器&上执行。从文件加载它,我开始看到问号(???)而不是希伯来字符(网站本身,希伯来语显示正确)。 SQL数据库有text
个类型字段。
更有趣的是,它在出现问号(!)之前已经正常工作了一段时间。(
)。
如何正确显示希伯来字符?谢谢!
答案 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