mybatis鏈接mysql數據庫插入中文亂碼

對於MySQL數據庫的亂碼問題,有兩種狀況:mysql

1. mysql數據庫編碼問題(建庫時設定)。spring

2. 鏈接mysql數據庫的url編碼設置問題。sql

對於第一個問題,目前我的發現只能經過從新建庫解決,建庫的時候,選擇UTF-8字符集。我試過修改現有數據庫字符集爲UFT-8,可是根本不起做用,插入的中文仍然亂碼(中文顯示成:???)。重建庫時選擇字符集爲UTF-8以後,中文正常顯示了。數據庫

對於第二個問題,是這樣的狀況:我建庫時設置了數據庫默認字符集爲UTF-8,經過mysql workbench直接插入中文顯示徹底正常。可是使用mybaits插入數據時,中文顯示成了"???"這樣的亂碼。但從數據庫獲取的中文不會亂碼。跟蹤數據庫操做,SQL語句中的中文仍是顯示正常的,可是插入到mysql數據庫後就亂碼了,因而判斷多是數據庫鏈接的問題。後來在網上找了下資料,發現確實能夠爲mysql數據庫的鏈接字符串設置編碼方式,以下:編碼

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8url

添加了useUnicode=true&characterEncoding=utf8參數以後,插入中文就正常了。
spa

<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/ecps?useUnicode=true&amp;characterEncoding=UTF-8"/>
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>

這些值應該寫在properties文件中,這裏爲了演示這麼寫code

添加的做用是:指定字符的編碼、解碼格式。orm

  例如:假設mysql數據庫用的是GBK編碼(也多是其它,例如Ubuntu下就是latin1),而項目數據庫用的是utf-8編碼。這時候若是添加了useUnicode=true&characterEncoding=UTF-8 ,那麼做用有以下兩個方面:blog

1. 存數據時:

  數據庫在存放項目數據的時候會先用UTF-8格式將數據解碼成字節碼,而後再將解碼後的字節碼從新使用GBK編碼存放到數據庫中。

2.取數據時:

  在從數據庫中取數據的時候,數據庫會先將數據庫中的數據按GBK格式解碼成字節碼,而後再將解碼後的字節碼從新UTF-8格式編碼數據,最後再將數據返回給客戶端。

相關文章
相關標籤/搜索