数据库里部分字会变成问号怎么解决?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

数据库里部分字会变成问号怎么解决?

h123135157 2020-07-14 13:43:48 823

数据库里部分字会变成问号怎么解决?

分享到
取消 提交回答
全部回答(1)
  • KB小秘书
    2020-07-22 15:52:00

    以下答案仅供参考,希望能解决您的问题!

    原因分析

    SQL Server 使用 Unicode 编码格式的数据类型(例如 NCHAR、NVARCHAR)来支持包含中文在内的亚洲语言。在查询代码中,数据类型必须是 Unicode 编码的数据类型。但在上述示例代码中使用的数据类型是 VARCHAR,所以导致查询结果出现乱码。

    解决方法

    要解决在 SQL Server 的表中查询生僻字出现乱码的问题,只需要将上述示例代码中的数据类型改为 Unicode 编码格式的数据类型即可(下述示例中使用的是 NVARCHAR)。

    另外,为避免乱码问题,在向 Unicode 编码格式的数据类型插入数据时,需要使用前置词 N。前置词 N 代表的是 SQL-92 标淮中的国家语言,且 N 必须大写。若您没有在 Unicode 字符串的常数前加 N 做为前置词,则 SQL Server 会在使用字符串之前将其转换成目前资料库的非 Unicode 字码页。

    操作步骤

    将上述示例中的数据类型 VARCHAR 改为 NVARCHAR,执行如下代码,查询 SQL Server 表中的生僻字“䅇 (su)”。

    use tempdb
    go
    IF OBJECT_ID('#temp', 'U') IS NOT NULL
        DROP TABLE #temp
    GO
    create table #temp(
    firstName nvarchar(10)
    )
    insert into #temp
    select N'䅇'
    union all
    select N'库'
    ;
    select * from #temp
    

    显示结果如下,“䅇 (su)”字正确显示出来了。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章