mysql采用utf-8字符编码,但在移动端使用输入法的表情并存储数据库的时候,出现错误。

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94'...

经排查,原因在于utf-8编码无法存储表情字符。

解决步骤:

  1. 更改数据库编码为utf8mb4和utf8mb4_unicode_ci
  2. 更改所需要存储表情的那张表的编码为utf8mb4和utf8mb4_unicode_ci
  3. 更改表中存储的那个字段的编码为utf8mb4和utf8mb4_unicode_ci
  4. 项目的数据库连接properties资源文件把URL的编码参数去掉
    经过以上的操作,表情可以存储到数据库了,但是出现问题是全部变成了??乱码
  5. 修改mysql配置文件my.cnf(windows为my.ini,linux为my.cnf)
    my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:
    [client]

    default-character-set = utf8mb4

    [MySQL]

    default-character-set = utf8mb4

    [mysqld]

    character-set-client-handshake = FALSE

    character-set-server = utf8mb4

    collation-server = utf8mb4_unicode_ci

    init_connect='SET NAMES utf8mb4'

  6. 重启mysql数据库,重新查看字符集

    经过5、6两个步骤,最后成功存储表情,并且查询显示也是可以的。

    除了这种方式,事实上,我们还可以对储存的数据进行编码,取的时候进行解码,这样也能解决这个问题,只是这种方式比较麻烦,你需要在所有存储该字段的地方编码,并在所有取用该字段的地方解码:

             try {
    URLEncoder.encode("sss", "utf8"); // 编码
    URLDecoder.decode("sss", "utf8"); // 解码
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }

mysql表情存储报错问题的更多相关文章

  1. mybatis 表情存储报错问题解决

    修改mysql配置文件my.cnf(windows为my.ini) mac brew方式在/usr/local/etc/my.cnf my.cnf一般在etc/mysql/my.cnf位置.找到后请在 ...

  2. 通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...

    原文:[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0... 这篇blog重点在解决问题,如果你对 ...

  3. MySQL主从1205报错【转】

    主从报错1205 Slave SQL thread retried transaction 10 time(s) in vain, giving up. Consider raising the va ...

  4. CentOS命令登录MySQL时,报错ERROR 1045 (28000):

    CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解 ...

  5. mysql执行update报错1175解决方法

    mysql执行update报错 update library set status=true where 1=1 Error Code: 1175. You are using safe update ...

  6. Mysql update in报错 [Err] 1093 - You can't specify target table 'company_info' for update in FROM clause

    Mysql update in报错 解决方案: [Err] 1093 - You can't specify target table 'company_info' for update in FRO ...

  7. mysql执行update报错 Err] 1055 - 'information_schema.PROFILING.SEQ' isn't in GROUP BY

    mysql执行update报错 Err] 1055 - 'information_schema.PROFILING.SEQ' isn't in GROUP BY 今天开发的同事发来如下错误信息,最最简 ...

  8. 远程登陆linux连接mysql root账号报错:2003-can't connect to MYSQL serve(转)

    远程连接mysql root账号报错:2003-can't connect to MYSQL serve 1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改roo ...

  9. 远程连接mysql root账号报错:2003-can't connect to MYSQL serve(转)

    远程连接mysql root账号报错:2003-can't connect to MYSQL serve 1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改roo ...

随机推荐

  1. swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~

    title: swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~description: 阅读 sowft 框架源码, swoft 第一步, ...

  2. “全栈2019”Java第六十五章:接口与默认方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. linux杀进程

    1.Linux杀进程的一个例子 (1)查看进程:ps -ef | grep 进程名 (2)杀进程:kill -9 进程名或者进程号 例如:杀tomcat的进程 (1)ps -ef | grep tom ...

  4. react-route简明学习

  5. python cookbook

    一 .数据结构 python collections包中 deque :固定长度队列,(例如固定长度的cache什么的) defaultdict:如果每个键值不存在,默认返回值 orderdict:有 ...

  6. 常见浏览器hack汇总

    1.背景渐变bug: ①.ie8 ie9:用滤镜的方式解决: -ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientT ...

  7. JAVA数据结构--AVL树的实现

    AVL树的定义 在计算机科学中,AVL树是最先发明的自平衡二叉查找树.在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树.查找.插入和删除在平均和最坏情况下的时间复杂度都是.增 ...

  8. thinkphp5.0升级

    之前一些项目是thinkphp5.0的版本.这个版本是有严重漏洞的.根据官方建议会把Request.php下面的 method方法做一个替换.但是实际上为了安全最好是做一个升级.首先必须要先做一个备份 ...

  9. 解决VS在高DPI下设计出的Winform程序界面变形问题

    在目前高分屏流行的情况下,windows缩放与布局仍然设置为100%就显得太小(特别是笔记本),通常会调整为125%或150%, VS在缩放与布局设置为非100%的时候,就会自动启动DPI感知模式,以 ...

  10. MB Star C3 vs MB Star C4

    New Mercedes Benz Star C3 is a professional diagnostic tool specially for mercedes benz cars. Merced ...