java經過mybatis往mysql數據庫插入數據亂碼

        今天發現了一個問題,經過mybatis往數據庫插入數據後,在數據庫中所插入的中文亂碼,開始覺得是mysql編碼設置問題,因而設置了mysql數據庫的編碼,可是不起做用,本身寫的sql語句有中文插入也不會亂碼,可是經過程序進去的爲何會亂碼呢,因而想到了是mybatis的問題,在插入以前都是中文也不會亂碼,後來發現原來是這個地方須要這樣寫:
jdbc_url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
加上以後再次添加中文,沒有問題了。若是數據源是配置在properties文件裏的,能夠直接用上面的,若是數據源是jndi,配置在context.xml中的,&須要轉義爲&

在網上找到一個解釋:mysql

這句話的做用是:指定字符的編碼、解碼格式。sql

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

1. 存數據時:mybatis

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

2.取數據時:url

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

相關文章
相關標籤/搜索