java连接mysql设置UTF-8mb4

为了兼容emoji表情符及一些特殊字符(4字节utf保存的字符,若采用传统的uft8的3字节保存会导致保存报错),需要在项目中设置uft88mb4编码格式。

这里首先看一下mysql官网文档对于使用的mysql驱动的说明:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-charsets.html 对于驱动版本有明确要求

Notes
For Connector/J 5.1.46 and earlier: In order to use the utf8mb4 character set for the connection,
the server MUST be configured with character_set_server=utf8mb4; if that is not the case,
when UTF-8 is used for characterEncoding in the connection string, it will map to the MySQL character set name utf8,
which is an alias for utf8mb3.
对于5.1.46及更早的版本,要使用utf8mb4字符集进行连接,服务器必须配置character_set_server=utf8mb4;如果不是这样,
则在连接字符串中使用UTF-8进行字符编码时,它将映射到MySQL字符集名称utf8,这是utf8mb3的别名。 For Connector
/J 5.1.47 and later: When UTF-8 is used for characterEncoding in the connection string, it maps to the MySQL character set name utf8mb4.
当UTF-8用于连接字符串中的字符编码时,它将映射到MySQL字符集名称utf8mb4。 If the connection option connectionCollation is also set alongside characterEncoding and is incompatible with it,
characterEncoding will be overridden with the encoding corresponding to connectionCollation. Because there is no Java
-style character set name for utfmb3 that you can use with the connection option charaterEncoding,
the only way to use utf8mb3 as your connection character set is to use a utf8mb3 collation (for example, utf8_general_ci) for the connection option connectionCollation,
which forces a utf8mb3 character set to be used, as explained in the last bullet.
由于utfmb3没有可用于连接选项charatencoding的Java样式字符集名称,
因此使用utf8mb3作为连接字符集的唯一方法是对连接选项connection collation使用utf8mb3排序规则(例如,utf8_general_ci),
这将强制使用utf8mb3字符集。

另外:

  • mysql的版本不能太低,低于5.5.3的版本不支持utf8mb4编码。
  • 若出现仍未生效的情况,可考虑修改mysql数据库对于字符的配置,以及相应的表对于字符的配置。

大致需要修改的配置如下:

  • mysql配置文件:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
  • 建库时,指定字符集编码为 utf8mb4、字符集校对规则为 utf8mb4_general_ci 或 utf8mb4_unicode_ci。
  • 建表时指定 utf8mb4 编码。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库中的中文乱码问题可以通过将数据库的编码设置为utf8mb4来解决。utf8mb4编码是utf8编码的超集,兼容utf8,并且能够存储4字节的表情字符。 要确认MySQL服务器是否支持utf8mb4编码,您可以在输入密码后进入mysql,并输入以下命令: ```sql SHOW VARIABLES LIKE 'character_set_database'; ``` 这将显示数据库的字符集设置。如果该设置为utf8mb4,那么MySQL服务器支持utf8mb4编码,可以正确存储和展示中文字符。 如果设置不是utf8mb4,您可以通过更改数据库的字符集设置为utf8mb4来解决中文乱码问题。可以参考相关的文章或文档进行操作,具体步骤可能会因为不同的MySQL版本而有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL乱码问题以及utf8mb4字符集](https://blog.csdn.net/weixin_33332385/article/details/113229400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [如何更改MySQL数据库的编码为utf8mb4](https://download.csdn.net/download/weixin_38590996/12823085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值