MySQL表中存Emoji报错Error 1366: Incorrect string value的解决方法

以前在创建MySQL表时,默认的编码都是utf8,没什么总是。最近在写一个手机的页面,测试时发现如果我在输入框的输入的Emoji字符,存入数据库时就会报错:

Error 1366: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'content'

Google说MySQL的utf8不是真正的UTF8,只能包含三个字节的unicode,4个字节就会报错。要解决此总是需要使用utf8mb4 这个编码。可是我把表和column的CHARSET都改成utf8mb4 后仍无法存入Emoji字符。

原来还要在my.cnf里修改下mysqld的character-set-server,把它改为utf8mb4,然后重启mysqld,就可存入Emoji字符了。

[mysqld]
character-set-server = utf8mb4

所以,建议大家以后在设计表时 default character set 最好设置为utf8mb4,因为现在Emoji字符已经很流行了,用户难免会在浏览器里输入Emoji字符。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值