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. iOS开发应用结构化资源储备

    1.常用跳转 class 1.1 工程配置及项目初始化 1.2 超常用代码规范 1.3 一种传统的程序模块化马甲包开发架构 2.UI显示部分 UIButton UILabel UIImageView ...

  2. react学习之路-配制antd-mobile

    经过将近三个月的使用,现在终于在我老大的带领下做完了一个react的项目,感觉还可以,最大的不足就是,对于react中的很多的东西都是掺杂着jq使用来做的,这是最不满意的一点吧,但是开发进度很近,只能 ...

  3. Bootrap 项目实战(微金所前端首页)第二部分(首页源码)

    首页源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  4. 免费观看vip/要劵的电影

    免费观看vip/要劵的电影 1.在爱奇艺/腾讯视频中复制电影的连接 2.复制连接到这个网站中(http://www.qmaile.com/) 3.粘贴路径到这个网站相应的位置 4.点击go ,等待解析 ...

  5. 863公司 linux软测题

    1.浏览目录命令 2.浏览文件命令 3.目录操作命令 4.文件操作命令 5.进程管理命令

  6. linux的sed(增删改查)使用方法

    sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...

  7. pip安装python库总是超时或出错的解决办法

    建个文件 ~/.pip/pip.conf, 内容如下 [global] timeout = index-url = http://pypi.douban.com/simple/ [install] u ...

  8. [转] scala中:: , +:, :+, :::, +++的区别

    [From] https://segmentfault.com/a/1190000005083578 初学scala的人都会被Seq的各种操作符所confuse.下面简单列举一下各个Seq操作符的区别 ...

  9. js中自执行函数写法

    //自执行写法1 (function T(){ alert(1) })() //自执行写法2 var T1=function(){ alert(1) }(); //传值 var para1={a:1; ...

  10. Django Rest Framework(阿奇)

    Django Rest Framework 一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中 ...