我的 SQL Server 上有一个产品数据库表。我尝试通过我的 C# 应用程序更改其 HTML 文本。到目前为止一切顺利。
HTML 包含 • - 枚举符号。即使此信息显示在 SQL Server Management Studio 中,它也不会显示在 Web 浏览器中,即使我在应用程序中重新打开该产品也不会显示。
如果我通过在 TableView (非 SQL)中键入 Management Studio 来更新产品,则 • 将在所有应用程序中正确显示。 该表的排序规则为:SQL_Latin1_General_CP850_CI_AS
我像这样更新产品:
UPDATE Products SET ShopText = '• 1<br /> • 2' WHERE ItemCode = '12345'
我做错了什么?
最佳答案
尝试在文字前面放置一个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
和NTEXT
(已弃用),以及带有N
的文字,例如N'SomeText'
< - 和扩展 ASCII(1 字节)。
试试这个,没有 N
也能工作(但是不要在整个数据库中混合排序规则!):
SELECT '• 1<br /> • 2' COLLATE Latin1_General_CI_AS
扩展 Ascii 使用前 0-127 来编码纯拉丁语集。表的上半部分取决于实际的排序规则/代码页。对于 1 字节编码的字符串,您无法确定该字符串是否保持不变:
关于C#/微软 SQL Server 2012 : Unicode symbols not displaying correctly (•),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974299/