一、前提
1、mysql的版本不能太低,低于5.5.3的版本不支持utf8mb4编码
2、将表中的对应字段,其字符集修改成utf8mb4
3、对于 JDBC 连接,需要使用 MySQL Connector/J 5.1.13(含)以上的版本。
4、JDBC 的连接串中,建议不配置 characterEncoding 选项。
二、解决方式
第一种通过 set names 命令设置会话字符集
1 2
| String query = "set names utf8mb4"; stat.execute(query);
|
第二种如果使用Druid连接池配置文件增加:
1
| <property name="connectionInitSqls" value="set names utf8mb4;"/>
|
完整配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc-driver}"/> <property name="url" value="${jdbc-url}"/> <property name="username" value="${jdbc-user}"/> <property name="password" value="${jdbc-password}"/> <property name="filters" value="stat"/> <property name="maxActive" value="20"/> <property name="initialSize" value="1"/> <property name="maxWait" value="60000"/> <property name="minIdle" value="1"/> <property name="timeBetweenEvictionRunsMillis" value="3000"/> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <property name="poolPreparedStatements" value="true"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> <property name="connectionInitSqls" value="set names utf8mb4;"/> </bean>
|