mysql的utf8字符集最多只支持3字节表示的字符,对于4字节的utf8字符需要用utf8mb4代替。
即:修改数据库连接和表相应字段为utf8mb4
如果直接使用mysql命令行插入4字节字符,无论utf8还是utf8mb4都能成功插入并显示在命令行中。
在mysql命令行插入四字符utf8时,如果列字段是utf8,无论数据库连接是utf8还是utf8mb4,得到的都是乱码,再把表字段改为utf8mb4也是乱码,貌似只能删掉重插了。(mysql命令行中显示的都还是正常的)
mysql版本5.5+
数据库字符集通过set names设置/mysqli_set_charset()
即:修改数据库连接和表相应字段为utf8mb4
插入数据时:
数据库连接 | 表字段 | 结果 |
utf8 | utf8 | 失败 |
utf8mb4 | utf8 | 失败 |
utf8 | utf8mb4 | 失败 |
utf8mb4 | utf8mb4 | 成功 |
显示数据时:
数据库连接 | 表字段 | 结果 |
utf8 | utf8 | 失败 |
utf8mb4 | utf8 | 失败 |
utf8 | utf8mb4 | 失败 |
utf8mb4 | utf8mb4 | 成功 |
如果直接使用mysql命令行插入4字节字符,无论utf8还是utf8mb4都能成功插入并显示在命令行中。
在mysql命令行插入四字符utf8时,如果列字段是utf8,无论数据库连接是utf8还是utf8mb4,得到的都是乱码,再把表字段改为utf8mb4也是乱码,貌似只能删掉重插了。(mysql命令行中显示的都还是正常的)
mysql版本5.5+
数据库字符集通过set names设置/mysqli_set_charset()