mysql:报错Incorrect string value:’\xF0\x9F\x94\xA6\xF0\x9F…’

一,报错信息:
1,报错:
Incorrect string value: '\xF0\x9F\x94\xA6\xF0\x9F...' for column 'content' at row 1
报错的原因:
字符串中包含了emoji表情:
如:
🔦💡🕯️
💡🕯️🔦
2,运行环境:
mysql 8.0.x
php 7.4.x
数据表的collation: utf8mb4_0900_ai_ci
这些都是支持emoji的
按理来说不应该出现报错
二,解决:
检查所用的php框架,
使用了一个封装mysqli的orm类,
找到其连接数据库的代码:
1
2
3
4
5
6
7
|
$mysqli = new mysqli( $host , $username , $password , $data_base ); if (mysqli_connect_errno()) { printf( "Connect failed: %s\n" , mysqli_connect_error()); exit (); } $mysqli ->set_charset( 'utf8' ); return $mysqli ; |
如上,把设置字符集修改为utf8mb4,
1
|
$mysqli ->set_charset( 'utf8mb4' ); |
然后问题解决
这个其实就是php向mysql数据库执行 ‘set names utf8mb4’
旧代码中只写了utf8,所以不支持emoji
说明:刘宏缔的架构森林—专注it技术的博客,
网站:https://blog.imgtouch.com
原文: https://blog.imgtouch.com/index.php/2023/06/18/mysql-bao-cuo-incorrect-string-value-xf0-x9f-x94-xa6-xf0-x9f/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
三,查看mysql的版本:
[root@img mysql]# /usr/sbin/mysqld -V
/usr/sbin/mysqld Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-06-18 vue.js3: 自定义video垂直可拖动的进度条(vue@3.2.36)
2022-06-18 vue.js3: 自定义video可拖动的进度条(vue@3.2.36)
2020-06-18 kubernetes:用kubeadm管理token(kubernetes 1.18.3)