记一次存储emoji表情问题
记一次存储emoji表情
问题原因
-
mysql常用的字符集如下
字符集: utf8mb3 排序规则: utf8mb3 general_ci # 上面的字符集就是我们所说的普通的utf-8 字符集:utf8mb4 排序规则:utf8mb4 0900 ai ci
-
上述两种字符集想要存储emoji需要使用utf8mb4这种字符集
-
查询数据库的字符集
SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = 'your_database_name';
-
查询表的字符集
SELECT CCSA.character_set_name FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = 'your_database_name' AND T.table_name = 'your_table_name';
-
查询字段的字符集
SELECT character_set_name FROM information_schema.`COLUMNS` WHERE table_schema = 'your_database_name' AND table_name = 'your_table_name' AND column_name = 'your_column_name';
如果上述查询结果又任何一项不是utf8mb4都无法写入emoji
问题解决方法
使用命令行修改字符集
-
更改数据库字符集
ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-
更改表字符集
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
更改字段字符集
ALTER TABLE your_table_name MODIFY your_column_name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
使用dbeaver修改字符集
-
双击数据库名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变
-
双击数据表名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变
-
双击表字段名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变
修改数据库连接方式
项目框架是django,这里以django配置为例
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': env("DB_NAME"),
'USER': env("DB_USER"),
'PASSWORD': env("DB_PASSWORD"),
'HOST': env("DB_HOST"),
'PORT': env("DB_PORT"),
# 需要在此处增加以下配置,修改数据库的连接方式为utf8mb4
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': "SET NAMES utf8mb4; SET CHARACTER SET utf8mb4; SET character_set_connection=utf8mb4;",
},
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现