zoukankan      html  css  js  c++  java
  • mysql表情存储报错问题

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

    java.sql.SQLException: Incorrect string value: 'xF0x9Fx92x94'...

    经排查,原因在于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两个步骤,最后成功存储表情,并且查询显示也是可以的。

      除了这种方式,事实上,我们还可以对储存的数据进行编码,取的时候进行解码,这样也能解决这个问题,只是这种方式比较麻烦,你需要在所有存储该字段的地方编码,并在所有取用该字段的地方解码:
      1         try {
      2             URLEncoder.encode("sss", "utf8"); // 编码
      3             URLDecoder.decode("sss", "utf8"); // 解码
      4         } catch (UnsupportedEncodingException e) {
      5             e.printStackTrace();
      6         }
  • 相关阅读:
    java第五周作业
    ajax初探--实现简单实时验证
    Html+CSS二周目--->常用概念
    Html+CSS--->第一周初探
    Servlet细节整合
    多线程基础
    设计模式之单例模式(Singleton)
    配置文件Java读写
    Java基础之IO流
    JDBC基础
  • 原文地址:https://www.cnblogs.com/lay2017/p/7452897.html
Copyright © 2011-2022 走看看