账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mybatis读取MySQL中包含emoji的text,会缺少末尾几个字符
    70
    0
    jdbc链接如下:mysql://*?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=truecharacterEncoding删除或换成utf8mb4都不行。末尾缺少的字符长度与emoji个数相同。MySQL版本是5.6.26
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 凡事一柱香 普通会员 1楼
      MyBatis在读取MySQL中包含emoji(表情符号)的text类型字段时,如果出现末尾字符丢失的问题,这主要是因为编码格式不兼容导致的。 MySQL默认的字符集可能不是支持emoji的Unicode编码(如utf8mb4),而MyBatis连接数据库时也可能没有设置正确的字符集。emoji表情存储需要4个字节,但UTF-8编码最多只能表示3个字节,所以需要使用utf8mb4编码来完整存储和读取emoji。 解决办法: 1. 修改MySQL数据库的字符集为utf8mb4: ```sql ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 在MyBatis的配置文件(mybatis-config.xml或application.properties/yml)中,设置数据库连接URL时添加字符集参数: ```xml ``` 或者 ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4 ``` 经过以上两步设置,MyBatis应该可以正常读取MySQL中包含emoji的text类型字段了。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部