C#/ Microsoft SQL Server 2012:Unicode符号无法正确显示(•)

时间:2017-05-15 08:06:16

标签: c# html sql sql-server unicode

我的SQL Server上有一个产品数据库表。我尝试通过C#应用程序更改其HTML文本。到目前为止一切都很好。

HTML包含• - 枚举符号。即使在SQL Server Management Studio中显示此内容,它也不会显示在Web浏览器中,即使我在应用程序中重新打开该产品也不会显示。

如果我使用Management Studio通过在表视图(非SQL)中键入产品来更新产品,则•在所有应用程序中正确显示。 表的排序规则是:SQL_Latin1_General_CP850_CI_AS

我像这样更新产品:

UPDATE Products SET ShopText = '• 1<br /> • 2' WHERE ItemCode = '12345'

我做错了什么?

1 个答案:

答案 0 :(得分:2)

尝试将N放在文字的前面......

SELECT  '• 1<br /> • 2' COLLATE SQL_Latin1_General_CP850_CI_AS
      ,N'• 1<br /> • 2' COLLATE SQL_Latin1_General_CP850_CI_AS

重要!
确保您的专栏Products.ShopText也是NVARCHAR(或NCHAR)列...

SQL Server知道两种字符串:

  • Unicode UCS-2 (2个字节,Unicode UTF-16的子集),在开头N,{NCHAR处签名NVARCHAR 1}}和NTEXT(已弃用),以及N的文字,如N'SomeText'
  • 扩展ASCII (1字节)。

试试这个,它可以在没有N的情况下工作(但不要在整个数据库中混合排序!):

SELECT '• 1<br /> • 2' COLLATE Latin1_General_CI_AS

扩展的Ascii 使用第一个0-127来编码普通拉丁语。表的上半部分取决于实际的排序规则/代码页。使用 1字节编码的字符串,您无法确定字符串是否保持不变: