utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,Java程序中将报SQL异常:
java.sql.SQLException: Incorrect string value: ‘xF0x9Fx92x94’ for column ‘title’ at row 1
utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。
采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。
更改数据库的编码为utf8mb4步骤如下:
1 更改表编码
ALTER TABLE `news` DEFAULT CHARACTER SET=utf8mb4;
2 更改表字段编码
ALTER TABLE `news` MODIFY COLUMN `title` varchar(512) CHARACTER SET utf8mb4 ;
3 修改数据库连接参数中:
$objPdo->exec('SET NAMES utf8mb4'); //设置连接字符集
操作以上3步,就好了,不用修改数据库配置,更不用重启mysql