MySQL存储emoji表情

emoji编码为unicode占用4个字节,如果MySQL字符编码为utf8,存储emoji会报错:

Incorrect string value: '\xF0\x9F\x98\x84' for column 'content' at row 

解决方法

MySQL >=5.5.3

把存储含有emoji表情的字符串编码改为utf8mb4

修改单个字段的编码方式

ALTER TABLE mytable MODIFY COLUMN content VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

MySQL < 5.5.3

对于不支持4个字节的存储,我们可以对emoji表情做转码,如转为base64,然后在存储进数据库。取出来时则需要做解码。但不推荐这样使用。建议还是升级数据库导新的版本。

版权声明:著作权归作者所有。

相关推荐

MySQL查看和设置事务的隔离级别

查看MySQL的事务隔离级别查看事务隔离级别SHOW VARIABLES LIKE 'tx_isolation'; 查看全局的事务隔离级别SHOW GLOBAL VARIABLES LIKE 'tx_isolation'; 使用系统变量查询SELECT @@global.tx_isolation; SELECT&nbs

MySQL类型隐式转换规则

在MySQL语句里,如果操作符应用于不同的类型的操作数,为了兼容让操作数兼容,MySQL会对操作数做类型转换,有些是自动的隐式转换。“+”号操作符使用“+”号相加的是字符串或字符串和数字,字符串会隐式转换为数字。以数字开头的字符串以数字开头的字符串,它会截取前面的数字字符串,转换为对应的数字。mysql> select '1a' + 1; +-----

MySQL 5.7账号锁定Account Lock

MySQL 5.7.8新增了Account Lock用于锁定账号。Account Lock可以在创建账号锁定,也可以使用ALTER USER语句进行锁定。创建账号时锁定mysql> CREATE USER 'demo'@'localhost' IDENTIFIED BY 'a123456'&n

MyBatis执行MySql批量插入数据

MySQL批量插入数据语法为:insert into my_table(field1, field2, field3) values ("f1_vaule1","f2_vaule1","f3_vaule1"), ("f1_vaule2","f2_vaule2"

Html5使用localStorage存储对象数据

Html5可使用localStorage存储数据,其方法为storage.setItem(keyName, keyValue); 其中:keyName:键,字符串类型keyValue:值,字符串类型关于setItem,可以参考:Storage.setItem()。如果需要存储对象数据,那么需要把对象数据使用JSON.stringify转换为字符串。localStorage.setItem