今天碰到一个mybatis向mysql中插入数据时,中文显示为’???'的问题,拿出来说下。
对于数据库操作中出现的中文乱码,一般有两种情况:
数据库本身设置连接数据库时,jdbc的编码设置
对于第一种情况,可以查看自身的mysql设置:
show variables like '%character%'
我的问题是第二种情况,需要在mybatis的配置文件中设置, 之前我的连接字段是:
<!-- 1. 数据源 : DriverManagerDataSource --><bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/uct"/><property name="username" value="root"/><property name="password" value=""/></bean>
修改后:
<!-- 1. 数据源 : DriverManagerDataSource --><bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/uct?useUnicode=true&characterEncoding=utf-8"/><property name="username" value="root"/><property name="password" value=""/></bean>
可以看到在连接的url后添加了useUnicode和characterEncoding的值,设定为utf-8.
这里有一点需要注意的是,在xml配置文件中,需要将’&‘符号转义,所以这里要写成’&’。
如果是在配置文件中,则无法转义,应为: jdbc:mysql://127.0.0.1:3306/wp?useUnicode=true&&characterEncoding=UTF-8&serverTimezone=GMT%2B8