mybatis串連mysql資料庫插入中文亂碼

來源:互聯網
上載者:User

對於mysql資料庫的亂碼問題,有兩中情況:

1. mysql資料庫編碼問題(建庫時設定)。

2. 串連mysql資料庫的url編碼設定問題。


對於第一個問題,目前個人發現只能通過重建立庫解決,建庫的時候,選擇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=utf8

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


添加的作用是:指定字元的編碼、解碼格式。

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

1. 存資料時:

     資料庫在存放項目資料的時候會先用UTF-8格式將資料解碼成位元組碼,然後再將解碼後的位元組碼重新使用GBK編碼存放到資料庫中。

2.取資料時:

     在從資料庫中取資料的時候,資料庫會先將資料庫中的資料按GBK格式解碼成位元組碼,然後再將解碼後的位元組碼重新按UTF-8格式編碼資料,最後再將資料返回給用戶端。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.