前言
这次对接的美团外卖 发现美团推送过来的订单中有表情符号。这些表情符号的存储问题,再上一个版本中就发现过。为了最小程度的影响程序,是直接在程序在做了表情过滤的。但是发现新增的表情太多了,而且编码也有千奇百怪的,所以这次索性考虑数据库兼容,在开发环境数据库测试完成后,发现utf8编码转换成utf8mb4没有出现担心的乱码问题,以前mysql低版本出现过,所以转换前还是最后能备份数据。
更改过程
1.数据库更改
对数据库的编码更改我没有使用sql,因为我数据库管理软件使用了navicat。navicat自带了编码修改工具,还是很方便的。
首先更改数据库编码
image.png
然后修改对应的列编码 我这里是没有更改表编码的 如果想整体的修改表编码
再多一步表编码修改即可
image.png
这里排序规则选择了utf8mb4_general_ci 一般会从 utf8mb4_general_ci 和 utf8mb4_unicode_ci里选 我的排序要求没有那么高 一般选utf8mb4_general_ci也就可以了
2.数据库连接池配置更改
数据连接池使用的是druid。要使用utf8mb4要指定编码。这个编码指定比较特殊
String connectionInitSqls = "SET NAMES utf8mb4";
StringTokenizer tokenizer = new StringTokenizer(connectionInitSqls, ";");
druidDataSource.setConnectionInitSqls(Collections.list(tokenizer));//重点设置该参数
配置好数据库和连接池后即可。
网友评论