针对MySQL数据库业务生产环境中,经常会有存储表情包的场景,比如:用户评论中的表情包数据。那么MySQL该如何存储这些表情数据呢?
1、直接insert插入?
既然这篇文章能够横空出世,说明直接insert是行不通的,不出意外的话,你会看到以下报错:ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\xA4\xA4' for column 'content' at row 1
2、MySQL字符集utf8mb4
涉及到文字、字符、表情等字符的存储,肯定是离不开MySQL对字符编码的支持。utf8mb4就是支持表情包的字符集,而MySQL在5.5.3版本时,就已经实现了对utf8mb4字符集的支持。关于字符集的相关介绍,我这里就不再赘述了,详情可以参考:MySQL字符集变量介绍。接下来我们直奔主题~
(1)修改MySQL配置文件
# 修改my.cnf配置文件 [mysqld] character_set_server = utf8mb4 collation_server = utf8mb4_general_ci init_connect = SET NAMES utf8mb4 # 用户登录到数据库上之后,在执行第一次查询之前,执行的内容的 skip-character-set-client-handshake = 1 # 跳过mysql程序起动时的字符参数设置 ,使用服务器端字符集设置
(2)修改存量表字符集
# 在线修改表字符集 alter table tb_name convert to character set utf8mb4;
3、表情包存储测试
(1)准备测试数据
create database starcto; use starcto CREATE TABLE my_comments ( `bulletinId` bigint NOT NULL COMMENT '消息id', `content` varchar(256) NOT NULL COMMENT '内容', PRIMARY KEY pk_my_comments(`bulletinId`) )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; # 插入带有表情的测试数据 insert into my_comments (bulletinid,content) values (0, '谢谢,太好看了!!????'); insert into my_comments (bulletinid,content) values (1, '谢谢,太好看了!!????');
(2)查看插入的表情包数据
4、生僻字存储测试
(1)报错复现,准备初始测试表
create database DB; CREATE TABLE student ( sno INT, sname VARCHAR(32), ssex VARCHAR(8) , primary key (sno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; # 初始指定默认字符集utf8 # 插入生僻字:???????? insert into student values (1001,'????????','男');
(2)异常解决
#(1)查看表结构,发现student表默认是utf8字符集 mysql> show create table student\G; *************************** 1. row *************************** Table: student Create Table: CREATE TABLE `student` ( `sno` int(11) NOT NULL, `sname` varchar(32) DEFAULT NULL, `ssex` varchar(8) DEFAULT NULL, PRIMARY KEY (`sno`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) #(2)修改表字符集 mysql> alter table student convert to character set utf8mb4; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 #(3)再次插入测试
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128105.html
摘要:前言最近开发的项目因为需要用户文本的存储,自然就遇到了等表情符号如何被支持的问题。问题描述如果字符集且是服务器的话,当存储含有表情时,会抛出类似如下异常这就是字符集不支持的异常。升级步骤的最低版本支持版本为,若不是,请升级到较新版本。 前言: 最近开发的iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题。困扰了数日,在就要绝望放弃...
摘要:教程所示图片使用的是仓库图片,网速过慢的朋友请移步原文支持表情。因为评论里面有表情,所以需要数据库支持编码。摸索后发现,需要更改的配置文件。在创建表格时候,设置字符集是,如下图所示最后,各式各样的表情就可以存储在数据库了 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 支持 emoji 表情。 更多讨论或者错误提交,也请移步。 1. 前言 ...
阅读 98·2024-11-07 18:25
阅读 130151·2024-02-01 10:43
阅读 785·2024-01-31 14:58
阅读 756·2024-01-31 14:54
阅读 82575·2024-01-29 17:11
阅读 2881·2024-01-25 14:55
阅读 1923·2023-06-02 13:36
阅读 2846·2023-05-23 10:26