近日新建項目使用框架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配置文件中,需要將'&'符號轉義,所以這裏要寫成'&'。