将表情符号插入 SQL Server

Posted

技术标签:

【中文标题】将表情符号插入 SQL Server【英文标题】:Insert Emoticons into SQL Server 【发布时间】:2019-06-04 09:50:48 【问题描述】:

我正在尝试将表情符号插入到我的 MS SQL 中。

我使用以下查询插入:

Dim command As New SqlCommand("INSERT INTO [dbo].[emoji]([Message]) VALUES('" & "????????????????????????????????????????☺️????????????????????????????????" & "')", SQLCon)

但在我的数据库上,它显示为???????

来自cmets Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 2017 年 8 月 22 日 17:04:49 版权所有 (C) 2017 Microsoft Corporation Express Edition (64-bit) o​​n Windows 10 Home 10.0 (Build 17134: )

我怎样才能将表情符号保存在 DB 中。

【问题讨论】:

列数据类型?列排序规则? 什么版本的 SQL Server? 我正在使用 nvarchar Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 2017 年 8 月 22 日 17:04:49 版权所有 (C) 2017 Microsoft Corporation Express Edition (64-bit) o​​n Windows 10 Home 10.0 (内部版本 17134:) 正如您在两个答案中看到的那样:您需要在文字字符串之前使用 N 以指示服务器该字符串是 Unicode 【参考方案1】:

试试这个。

Dim command As New SqlCommand("INSERT INTO [dbo].[emoji]([Message]) VALUES(N'" & "??????????☺️????????" & "')", SQLCon)

【讨论】:

就个人而言,我会对其进行参数化,因为我怀疑该值来自用户输入;在 SQL 中注入值绝不是一个好主意。【参考方案2】:

我强烈建议您对查询进行参数化,不要注入该值。然后,只要您将参数声明为正确的数据类型,就可以正常工作。所以像:

Dim Emojis As String = "??????????☺️????????"

Dim SQL As String = "Insert into [dbo].[emoji]([Message]) VALUES(@Message);"
Dim command As New SqlCommand(SQL,SQLCon)

command.Parameters.Add("@Message", SqlDbType.NVarChar,100).Value = Emojis 'Guessed Length for the parameter

【讨论】:

当然,数据库列数据类型也必须是nvarchar才能正确存储这些字符。 OP 已经解决了 cmets 中的那个问题,@DanGuzman:“我正在使用 nvarchar” 支持“参数化您的查询”。 这很关键 在这里听到反对意见会很有趣;原因是什么?什么是参数化不好或危险?如果是因为这个答案“更长”,我建议查找 SQL Injection。【参考方案3】:

你可以试试这个:

declare @t table (emoji nvarchar(50))

Insert into @t VALUES(N'??????????☺️????????')


select * from @t

【讨论】:

【参考方案4】:

您应该为该列使用NVARCHAR 数据类型。 例如。

declare @tbl table(message nvarchar(50))
insert into @tbl values(N'????????')
select * from @tbl

我建议你必须使用 SqlParameter 来插入或更新 SQL 列中的数据。

【讨论】:

以上是关于将表情符号插入 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

表情符号未插入数据库节点 js mysql

移动端的emoji表情符号插入MySQL数据库失败

苹果emoji表情符号 那种特殊的符号怎么打出来

在光标处插入表情符号

如何使用 javascript 检测表情符号

如何使用 javascript 检测表情符号