• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

php 解决MySQL插入数据出现 Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误

在项目中向MySQL插入数据时。发现数据插入不完整,通过调试,发现插入语句也没什么特殊的错误。

可是就是差不进去,于是就打开mysqli错误的调试

$ret = mysqli_query($this->conn, $sql) or die(mysqli_error($this->conn));


结果弹出例如以下错误信息:

 Incorrect string value: '\xF0\x9F\x92\x8BTi...'


有错误信息就好办了,结果上网一查结果是:mysql编码格式utf-8格式,不支持带四字节的字符串插入。


网上提供两种方法:

1.升级MySQL,然后将相应的数据类型改为utf8mb4类型

2.出现的四字节UTF-8字符过滤或转化为自己定义类型


因为装的MySQL版本号为5.1。所以方法1不适合;本人选了另外一种过滤字符串,变成合适的3字节utf-8

$str = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $str);

尽管还是不能非常完美解决,可是至少保证每条数据都能够正确插入。

假设想完美解决的话。最好升级MySql,直接改数据类型为utf8mb4类型




posted on 2017-05-15 10:41  cynchanpin  阅读(1126)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3