zoukankan      html  css  js  c++  java
  • SSM框架+MySql保存emoji表情

    本博客的记录的操作在linux

    项目中需要从微信获取授权来登录,在此过程,保存微信emoji表情昵称到mysql数据库的时候出了错误。

    老规矩百度一下,得知是mysql的utf8字符集只支持1-3个字节的字符,而表情则需要4个字节,所以mysql提供了一个utf8mb4字符集,在支持4个字节的同时又可以完美兼容utf8,免去我们的后顾之忧。

    百度大部分的步骤是这样的,1-3步骤可以使用命令也可以使用工具(例如Navicat)来完成。

    1:修改数据库字符集:

         (1) 命令方式:ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

         (2)工具方式:选中指定数据库,邮件选择数据库属性,修改字符集与排序规则如下:

                  

    2:修改数据库表的字符集

        (1)命令方式: 首先切换到步骤1所操作的数据库,随后执行命令:ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

        (2)工具方式: 打开数据库,选择要操作的表,右键选择设计表,选择选项,选择字符集和排序规则如下:

                  

    3:修改列的字符集

        (1)命令方式: ALTER TABLE 表名 CHANGE 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

                                   例:ALTER TABLE user CHANGE name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

        (2)工具方式: 选中要操作的表,右键选择设计表,选择指定字段,修改字符集和排序规则如下:

                

    4:修改my.cnf文件(windows是my.ini文件)

         编辑文件,添加以下内容:

    [client]
    
    default-character-set=utf8mb4
    
    
    [mysqld]
    
    character-set-client-handshake = FALSE
    
    character-set-server = utf8mb4
    
    collation-server = utf8mb4_unicode_ci
    
    init_connect=’SET NAMES utf8mb4'
    
    [mysql]
    
    default-character-set=utf8mb4
    

    5:最后还需要重启一下mysql哦。

        上述方式适用于普通的mysql使用表情的问题。如果使用mybatis做持久层操作,可能会碰到更坑的问题,这些你都配置了,依然不会成功。找了很多资料,终于发现一位博主的解答,连接池的配置中可以添加这么一个配置:

    	<property name="connectionInitSqls">
    		<list>
    			<value>set names utf8mb4</value>
    		</list>
    	</property>
    

     最后,当然是完美的解决了。

        很想贴上最后这位博主的链接~但找遍了历史记录也没能找到,恨忘记收藏~~~

        如果无法通过以上方式解决问题,可以参考下这问简书博友的文章:https://www.jianshu.com/p/b0f5eb5d7cc3

        他使用一种折中的方式,对存储的内容编码后保存,取出后再解码,相对较为麻烦,但也不失为一种解决方式

      

  • 相关阅读:
    flexpager权限控制文件crossdomain.xml
    MongoDB之mongodb.cnf配置
    MySQL之my.cnf配置
    在CentOS的profile文件中配置环境变量
    在CentOS上配置MySQL服务
    在CentOS上配置redis服务
    在CentOS上配置tomcat服务
    在CentOS上配置Tomcat服务脚本
    Netflix Hystrix — 应对复杂分布式系统中的延时和故障容错 转
    ETCD 简介 + 使用
  • 原文地址:https://www.cnblogs.com/WangYunShuaiBaoLe/p/9055215.html
Copyright © 2011-2022 走看看