You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSSQL编码问题:NVARCHAR列插入中文字符显示为??的解决方法

解决MSSQL中NVARCHAR列插入中文字符显示为??的问题

问题场景

我之前碰到过完全一样的情况:尝试在MSSQL中执行这条插入语句时,出现了中文乱码的问题:

insert into STUDENT (STUDENT_NAME, STUDENT_MARKS, SID) values ('索引', 10, 2)

其中STUDENT_NAME列的类型明明是NVARCHAR,但插入后学生姓名却显示成了??。

原因分析

这是MSSQL的编码规则导致的:

  • 当你用普通单引号包裹字符串('索引')时,MSSQL会默认按非Unicode编码(比如常见的SQL_Latin1_General_CP1_CI_AS)解析,这类编码不支持中文字符的存储,自然就会出现乱码或??的情况。
  • 而NVARCHAR是专门为存储Unicode字符设计的列类型,必须配合Unicode字符串的标识才能正常工作。

解决方案

只需要在字符串常量前加上大写的N前缀,告诉MSSQL这是一个Unicode字符串,修改后的语句就能正常插入中文字符了:

insert into STUDENT (STUDENT_NAME, STUDENT_MARKS, SID) values (N'索引', 10, 2)

另外补充一点:如果是通过变量插入数据,也要确保变量的类型是NVARCHAR而非VARCHAR,这样才能从源头避免编码问题。

内容的提问来源于stack exchange,提问作者Jatinder Jindal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:09:01