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

如何在SQL Server中插入特殊字符?emoji显示为??问题求助

解决SQL Server中NVARCHAR列存储Emoji显示为??的问题

核心原因

  • 排序规则限制:SQL_Latin1_General_CP1_CI_AS 基于单字节Latin1编码,无法识别Unicode补充字符(Emoji多属于4字节Unicode字符)。
  • 插入语法疏漏:插入字符串时未添加N前缀,导致SQL Server按非Unicode编码解析字符串,直接丢失Emoji字符。

分步解决方案

1. 修改列/数据库的排序规则

需将排序规则替换为支持Unicode补充字符的类型,推荐两种选择:

  • Latin1_General_100_CI_AS_SC:SC后缀代表支持补充字符,全版本SQL Server兼容
  • Latin1_General_100_CI_AS_SC_UTF8:SQL Server 2019+支持,更贴合现代UTF-8编码需求

修改目标列排序规则

ALTER TABLE TableName
ALTER COLUMN Title NVARCHAR(255) COLLATE Latin1_General_100_CI_AS_SC;

ALTER TABLE TableName
ALTER COLUMN Description NVARCHAR(255) COLLATE Latin1_General_100_CI_AS_SC;

(可选)修改数据库默认排序规则

若后续新建表也需要支持Emoji,可修改数据库默认规则(操作前需断开所有数据库连接):

ALTER DATABASE YourDatabaseName
COLLATE Latin1_General_100_CI_AS_SC;

2. 插入数据时添加N前缀

插入字符串前必须加N标记,明确告知SQL Server这是Unicode字符串:

INSERT INTO TableName 
(Id, Title, Description) 
VALUES
(1, N'This is my title 😀', N'Here is a description with a 📻 radio');

3. 验证存储结果

执行查询确认Emoji是否正常显示:

SELECT Id, Title, Description FROM TableName;

额外注意事项

  • 应用程序连接字符串需配置正确的字符编码(如指定Unicode相关参数),避免数据传输过程中丢失字符。
  • 若使用旧版SQL Server(2017及以下),只能选择带SC后缀的排序规则,UTF8排序规则不被支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:05:26