sql - 我们如何将表情符号保存在 SQL 数据库中以保留它们的唯一性以进行相等比较?
问题描述
当我们将表情符号保存到我们的数据库时,我们遇到了问题。
我们已将表格列更改为字符集和排序规则,以节省足够的字节来区分表情符号。
这是我们修改表列的查询:
ALTER TABLE TableName MODIFY TableColumn VARCHAR(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
当我们保存以下表情符号时,二进制值如下:
♥️ | e2 99 a5 ef b8 8f
| f0 9f 90 92
| f0 9f 90 b5
一些表情符号 (♥️) 保存二进制信息,使我们能够将它们区分为唯一/单独的表情符号。
由于我们不想两次保存相同的表情符号,因此对于我们的用例,我们正在检查数据库中的“值”。如果该值存在,我们不保存表情符号。
但是,许多表情符号值,包括 和 ,都被视为相同的值。
因此,当我们尝试保存 and 时,只有一个被保存...
为什么它们被视为相同的值?
我们如何使用 SQL 保存和识别不同的表情符号?
我们可以使用更好的字符集或排序规则吗?
我们正在通过单独的存储库访问 MySql 和 MSSql 数据库,这些存储库是在 .NET 框架项目中用 C# 编写的。
解决方案
实际上,您的坐着猴子的代码是错误的!那将是f0 9f 90 92
,不是f0 9f 90 b5
。请参阅https://www.fileformat.info/info/unicode/char/1f412/index.htm,UTF-8 十六进制代码。其他两个代码似乎是正确的。
无论您做什么,错误都不在您显示的代码一侧。
推荐阅读
- python - 调用 CopyObject 操作时的 NoSuchBucket
- c++ - 如何从输入的数字文件中找到最大数字
- ionic-framework - 如何将css应用于离子警报中的文本?
- javascript - 我可以在 Document.write() 中调用函数 () 吗?
- amazon-web-services - Nginx 不会将流量从 http 重定向到 https
- java - 如何从文件中提取作者姓名?
- c# - 字符串未将换行符输出到视图表
- c# - C# 导入 dll 文件 - 文件有坏图像... msb3246
- ember.js - ember-fastboot 中的模型加载了两次
- python - 条件列表元素值