写入数据库的内容中包含emoji表情,导致写入失败报错如何处理?
最新遇到的小问题,这种问题一般出现在移动端使用手机填写内容或者发布文章的时候输入了一些emoji表情或者其他的表情,导致写入的时候报错,一般报错内容是: Incorrect string value: '\xF0\x9F\xA4\x97\xF0\x9F...' for column 'content' at row 1。
遇到这种错误,有时候无法第一时间判断问题出在哪里,开始以为是在截取内容的时候因为字符集的问题导致截取汉字的时候出现截取了半个汉字的问题导致的报错,后来才发现是因为这种表情的问题,导致的报错。
这个问题解决起来也很简单,数据库的字符集改为的utf8mb4格式,就可以解决这个问题。
写入数据库的内容中包含emoji表情,导致写入失败报错如何处理?
有时候在创建数据库的时候设置的就是utf8mb4的可能也不会生效,原因是因为.数据库字符集的使用顺序是:数据库字符集 < 表字符集 < 表字段(列)字符集。可能你设置的数据库是utf8mb4但是字段的字符集不是,所以最好是指定到对应的字段才好。
如果在创建表时没有指定字符集,那么将默认使用数据库的字符集。同样地,如果在创建表的字段时没有指定字符集,那么将默认使用表的字符集。
MySQL支持多种字符集,其中最常用的是utf8和utf8mb4。utf8mb4是utf8的超集,支持四字节长度的UTF8字符,包括emoji的编码支持。