问题1
当加入emoji表情时,SQL数据库提示1366 Incorrect string value错误:
mysql 1366: Incorrect string value: '\xF0\x9F\xA5\xB0\xF0\x9F for column ‘msg’ at row 1
这是因为emoji表情符号不能直接使用普通的utf-8编码,而是要采用utf8mb4编码,在每次连接的时候把编码设置成utf8mb4才可以解决。
解决步骤:
- 在连接数据库的php文件里,在每次连接前都把编码都设置为utf8mb4
代码:
$conn = new PDO($dsn, $username, $password);
$conn->exec("set charset utf8mb4");
或者:
$conn = new PDO($dsn, $username, $password);
$conn->query("set character set utf8mb4");
问题2
emoji表情被成功加入,但是在数据库里面变成了问号,如下图
这是因为数据库的编码仍然是utf8,而不是utf8mb4,解决方法十分简单粗暴:把数据库里面有关字符编码的项目全部改为utf8mb4,因为utf8mb4是utf8的超集,因此不会有兼容性问题,可以放心修改
修改栏位的编码
修改数据库的编码
修改表的编码
通用修改