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. leetcode 16. 3Sum Closest JAVA

    题目: 给定一个包括n个整数的数组nums和一个目标值target.找到nums中的三个整数,使得他们之和与target最为接近.返回三个整数之和,假定每组输入只存在唯一答案 解题思路: 将nums数 ...

  2. kali linux之Backdoor-factory

    Backdoor-------python编写 适用于windows PE x32/x64 和Linux ELF x32/x64(OSX),支持msf payload 自定义payload 将shel ...

  3. [转] Linux 中提高 VsFTP 服务器的安全性

    FTP是互联网应用中的一个元老级人物了,其方便企业用户文件的共享.但是,安全问题也一直伴随在FTP左右.如何防止攻击者通过非法手段窃取FTP服务器中的重要信息;如何防止攻击者利用FTP服务器来传播木马 ...

  4. 不用split调转字符串

  5. (一)Win消息机制,SDK编程基础

    一,基本概念 SDK:软件开发工具包(缩写:SDK.外语全称:Software Development Kit) API:应用程序接口 WINAPI:Windows平台下的系统调用,包含 window ...

  6. 干掉Vivado幺蛾子(1)-- Xilinx Tcl Store

    目录 1. 安装Xilinx Tcl Store 2. 手动更新 2.1 下载库 2.2 修改环境变量 参考文献: 最近在跟着高亚军老师的分析文章来学习Xilinx最近发布的<UltraFast ...

  7. 2. Javscript学习笔记——引用类型

    2. 引用类型 2.1 Object类型 Object 是一个基础类型,其他所有类型都从 Object 继承了基本的行为. 对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象 ...

  8. Git sparse-checkout 检出指定目录或文件

    根据网上资料整理而来,git 1.7版本后支持的sparse checkout特性,可以指定需要checkout的目录或者文件. # 设置允许git克隆子目录 git config core.spar ...

  9. Watchbog挖矿病毒程序排查过程

    第1章 情况 1)服务器收到cpu报警,cpu被占用达到100%,登录服务器查看,发现cpu被一个watchbog的进程占满了,如下图所示: 2)并且无论如何都杀不掉,用kill杀掉后,其还是会隔一会 ...

  10. PIE SDK与OpenCV结合说明文档

    1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 ...