【问题标题】:HTML Symbols are being displayed as a question mark in SQL Server DatabaseHTML 符号在 SQL Server 数据库中显示为问号
【发布时间】:2014-01-18 12:48:42
【问题描述】:

今天我注意到诸如 ★ 之类的 html 符号在我的数据库中显示为问号。

我使用 varchar 作为类型,我使用的数据库是 microsoft sql 2008。

有人知道解决这个问题的方法吗?

【问题讨论】:

    标签: html sql-server symbols


    【解决方案1】:

    您的列需要使用NVARCHAR 数据类型,VARCHAR 数据类型只能用于非Unicode 字符。

    如果您在数据类型中存储 unicode 字符,则应使用 NVARCHAR 数据类型,并且在将数据插入 Column 时使用 N 前缀告诉 sql server 在传递的字符串中会有一些 unicode 字符。

    使用 VARCHAR 数据类型

    CREATE TABLE #Temp (Column1 VARCHAR(100))
    INSERT INTO #Temp VALUES('★')
    SELECT * FROM #Temp
    

    结果

    ╔═════════╗
    ║ Column1 ║
    ╠═════════╣
    ║ ?       ║
    ╚═════════╝
    

    使用 NVARCHAR 数据类型

    CREATE TABLE  #Tempn (Column1 NVARCHAR(100) )
    INSERT INTO #Tempn VALUES(N'★')        --<-- N prefix for Unicode Characters
    SELECT * FROM #Tempn
    

    结果

    ╔═════════╗
    ║ Column1 ║
    ╠═════════╣
    ║ ★       ║
    ╚═════════╝
    

    【讨论】:

    • 不错的答案,如果我要传递一个参数,我可以只输入 N@test,行吗?
    • 我想做如下的事情: DECLARE @test NVARCHAR = 'N"★ "' create table test (abc nvarchar) insert into test values (@test) select * from test 以上代码只是一个例子,我将从.NET传递值到参数,我该怎么做?
    【解决方案2】:

    将符号定义为 NVARCHAR 而不是 VARCHAR

    【讨论】:

      【解决方案3】:
      insert into tablename values (N'★ ') 
      

      以上是插入语法并确保您的字段数据类型为nvarchar 或试试这个测试示例

      create table test (abc nvarchar)
      insert into test values (N'★ ')
       select * from test
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-19
        • 2017-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        相关资源
        最近更新 更多