近日新建项目使用框架mybatis+mysql,插入中文时数据库中显示为'???',故做此笔记。
对于向utf-8格式MySQL数据库中保存乱码的情况,主要为三种:
1)项目编码没有采用utf-8格式;
2)MySQL编码和排序规则没有采用utf-8格式;
3)链接数据库的mybatis配置运行环境时,没有置顶编码字符集。
本项目中产生中文乱码问题是由于第三种原因造成的,原mybatis配置文件为:
<!-- 配置运行环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/student" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
修改后的配置文件为:
<!-- 配置运行环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
可以看到在连接的url后添加了useUnicode和characterEncoding的值,设定为utf-8后问题解决;这里有一点需要注意的是,在xml配置文件中,需要将'&'符号转义,所以这里要写成'&'。