zoukankan      html  css  js  c++  java
  • SpringBoot2昵称支持emoji(mysql)

    新建的用户表中,昵称需要支持emoji,再向表中插入数据时,发生异常:

    java.sql.SQLException: Incorrect string value: 'xF0x9Fx98x83xF0x9F...' for column

    产生问题原因

    新建的用户表,使用的是utf8字符集编码,mysql实现utf8编码时,最大长度为3个字节,包含了绝大多数的国际字符,但并不是所有,而emoji,需要4个字节才能编码。

    MySQL在 5.5.3 之后增加了utf8mb4字符编码,能够使用4个字节存储更多的字符。

    问题解决方法

    1. 修改表或字段的字符编码
    2. java驱动检查
    3. 增加数据源配置项

    修改表或字段的字符编码

    修改表的字符集编码        

    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

    修改字段的字符集编码

    ALTER TABLE table_name MODIFY COLUMN column_name text  CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

     

    Java驱动检查

    MySQL读写emoji,MySQL驱动版本要在 5.1.13 及以上版本,数据库连接依然是 characterEncoding=UTF-8

    java驱动会自动检测服务端 character_set_server 的配置,如果为utf8mb4,驱动在建立连接的时候设置 SET NAMES utf8mb4

    数据源配置

    如果服务端 character_set_server 的配置,不为utf8mb4,则需要增加数据源配置

    # 指定连接被创建,再被添加到连接池之前执行的sql
    spring.datasource.connection-init-sql=SET NAMES utf8mb4
  • 相关阅读:
    Android编译环境配置(Ubuntu 14.04)
    Android中的接口回调技术
    我为什么要拒绝Ctrl+C和Ctrl+V?
    软件设计网站大全
    国内及Github优秀开发人员列表
    Linux常用指令
    Linux系统目录结构
    UML图
    Android软件设计---Dumpsys工具使用
    Android应用程序Monkey测试
  • 原文地址:https://www.cnblogs.com/lzw-st/p/13202002.html
Copyright © 2011-2022 走看看