背景: 用户输入的表单里边。存在 手机自带的表情,  在执行插入时候报错

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

错误原因:我们在设置mysql编码格式时一般 utf-8 格式,是不支持带四字节的字符串插入的。

解决方法:

1.升级MySQL,然后将对应的数据类型改为utf8mb4类型(mysql 版本 >= 5.5)

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

方法1  : (不能只改表名字的编码而忽略了字段的编码,亲测。必须两个都改才可以)

直接升级mysql  ,把对应的字段改为 utf-8mb4 即可

方法2: (没试,网上找的)

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

番外: (网上查的资料)

对于mysql 5.5 而言,如果不设定字符集,mysql默认的字符集是 latin1 拉丁文字符集;

为了统一管理和应用开发的方便,一般都会统一将操作系统,客户端,数据库各方面的字符集都设置为 utf8 字符集,即能满足各种字符应用,又能统一字符集,避免各种乱码问题。
 
 
但随着各种业务的进一步发展,除了各个国家的本身语言字符,经常也会有一些表情符号出现在应用程序中,而在mysql 5.5 之前,UTF-8编码只支持1-3个字节,支持BMP这部分的Unicode编码区;从MySQL 5.5开始,可以支持4个字节UTF编码 utf8mb4 ,一个字符能够支持更多的字符集,也能够支持更多表情符号。
 
 
utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8字符集的超集。所以现在一些新的业务,比如ISO等,会将MySQL数据库的字符集设置为utf8mb4。
 
今天在处理一个应用需求的时候,就遇到这样一个问题:
应用所有的客户端都是utf8字符集,MySQL数据库也是utf8字符集,但现在有业务需要使用mb4部分增加的字符,需要MySQL数据调整字符集。
 
当然调整的最好方法是客户端,mysql数据库的字符集都修改为utf8mb4,但这样修改量比较大,而且如果客户端一部分修改为utf8,一部分为utf8mb4的话,容易发生混乱。
所以业务需要所有客户端的utf8字符集不变,仍让保持为统一的utf8,只修改MySQL数据库端,保证客户端连接的utf8字符集连接到数据使用后,能够当做utf8mb4字符来使用。
 
经过几次测试后,MySQL数据库的my.cnf中关于字符集的配置修改为下面的配置了:
 
[client]
default-character-set=utf8mb4 [mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake = true [mysql]
default-character-set = utf8mb4
 
 

【Mysql】解决插入数据出现 Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误的更多相关文章

  1. Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误

    一.背景 1.java项目,name含有表情插入到mysql数据库中报错   Incorrect string value: '\xF0\x9F\x92\x8BTi.. 2.解决办法 (1)将字符串中 ...

  2. mysql: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x90</...'

    插入数据出现问题,因为包含了特殊字符. 现象: 插入的数据中如果含有某些特殊字符,会导致插入数据失败,例如字符串”测试**插入数据...“,在console中insert是正常的,但是使用java代码 ...

  3. 表情存储异常--mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1)

    文章参考 https://blog.csdn.net/junsure2012/article/details/42171035 https://www.cnblogs.com/WangYunShuai ...

  4. mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1)

    文章参考 https://blog.csdn.net/junsure2012/article/details/42171035 https://www.cnblogs.com/WangYunShuai ...

  5. MySQL Error:Warning: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x82\\xF0\\x9F...' for column 'xxx' at row 2")

    bug现象 使用连接数据库的可视化软件插入 emoj 表情数据.生僻字,可以正常插入.(导致我一直以为跟表情没有任何关系,谷歌出来一堆跟修改数据库.表.字段 的编码的结果....)但是一启动程序插入新 ...

  6. 特殊符号存入mysql数据库时报错:Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F的解决方法

    问题描述:从新浪微博抓取消息保存到MySQL数据中,对应数据库字段为varchar,字符编码utf-8.部分插入成功,部分插入失败,报错如标题. 在网上查询,有人说是编码问题,建议修改编码格式,比如改 ...

  7. 【MySQL】java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3' for column

    问题原因: 输入内容包含特殊字符,MySQL 中的列不支持. 解决方法 多数是修改 MySQL 的数据库和表结构,CHARSET 改为 utf8mb4,但本人测试还是不能传入 emoji. 后来在代码 ...

  8. 彻底解决:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1

    转载:https://blog.csdn.net/qq_31122833/article/details/83992085

  9. php 解决MySQL插入数据出现 Incorrect string value: &#39;\xF0\x9F\x92\x8BTi...&#39;错误

    在项目中向MySQL插入数据时.发现数据插入不完整,通过调试,发现插入语句也没什么特殊的错误. 可是就是差不进去,于是就打开mysqli错误的调试 $ret = mysqli_query($this- ...

随机推荐

  1. [uboot]在uboot里面添加环境变量使用run来执行

    转自:http://blog.csdn.net/yangzheng_yz/article/details/41038259 在移植uboot的时候,可以在uboot里面添加定义一些自己的环境变量,这些 ...

  2. 4G模块ME3760_V2的拨号过程

    AT AT+CFUN=1                          模块功能全打开,上电可以设置默认状态 AT+ZSET="LET_INFO" 掉电后可以保存AT+CFUN ...

  3. spring 加载bean过程源码简易解剖(转载)

    这一篇主要是讲用载入bean的过程.其实就是IOC.低调 低调.. 我把重要的都挑出来了.一步步往下看就明白spring载入bean.xml里面bean的原理 . 感觉像候杰的 MFC深入浅出,哈哈. ...

  4. asp.net mvc 4 AntiForgery 提供的防伪标记适用于用户“”,但当前用户为“XX” 问题处理记录

    情景:    某页面未登录下可以访问,但具体操作时发现未登录就弹出登录窗,待完成登录后继续操作. 当登录成功,前端继续操作(post后端接口)时发现以下错误:   提供的防伪标记适用于用户“”,但当前 ...

  5. iOS边练边学--plist文件,懒加载,模型初使用--补充instancetype

    一.什么是plist文件 1>将数据直接写在代码里面,不是一种合理的做法.如果数据经常修改,就要经常翻开对应的代码进行修改,造成代码扩展性低 2>因此,可以考虑将经常变得数据放在文件中进行 ...

  6. 手动模拟输出json

    每次去写太麻烦,写一个样本,下次对照就好了 context.Response.Write("{\"UserName\":\""+HttpContext ...

  7. Jquery与.net MVC结合,通过Ajax

    在工作中做了这么一个东西. Html端: @using Test.fh.Project.Storefront.ViewModels @using Test.fh.Project.Storefront. ...

  8. 获取表单提交MVC错误信息

    if (!ModelState.IsValid)                {                    List<string> Keys = ModelState.Ke ...

  9. am335x LCD背光问题

    /**************************************************************** * am335x backlight problem * * 本问记 ...

  10. e657. 用直线和曲线绘制图形

    GeneralPath shape = new GeneralPath(); shape.moveTo(x, y); shape.lineTo(x, y); shape.quadTo(controlP ...