解決hibernate儲存資料到mysql中出現亂碼問題

來源:互聯網
上載者:User

標籤:

    今天使用hibernate儲存資料到mysql中,發現出現亂碼問題,經過檢查,發現接收到的是正確中文,說明用戶端瀏覽器將中文編碼發送到伺服器過程中無亂碼問題,後來尋找資料:

首先要告訴資料庫要插入的字串的字元集,mysql 預設使用的字元集是 latin1。我要儲存的字串是 UTF-8 編碼的(字元集是 Unicode),所以包含這個欄位的表應該使用 UTF-8 編碼。

這裡有幾種解決辦法。

1、在建立資料庫的時候指定資料庫的字元集編碼,這樣,這個資料庫的所有表都會預設使用資料庫的字元集編碼。如 create database foo charset utf8;

 

2、在建表的時候指定字元集編碼。如 create table foo (id char(20)) charset utf8;

3、指定某一列使用的字元集編碼。如create table foo (id char(20) charset utf8);

 

 

 

如果你有需要的話還可以指定字元排序的規則,也就是指定 collation,如 create database foo charset utf8 collate utf8_general_ci;,同樣也可以指定單獨的表、列使用的 collation 規則。

然後在使用 jdbc 串連資料庫的時候要告知 jdbc 使用什麼字元集編碼來跟伺服器通訊。很簡單,只需要在 jdbc 指定資料庫路徑時做一點修改就可以了。比如,jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8。注意如果在 XML 檔案裡面的話 “&” 要改成 “&amp”。

完整的寫法:jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8

在hibernate的設定檔裡面修改代碼如下:

<property name="connection.url">             jdbc:mysql://127.0.0.1:3306/hello?useUnicode=true&characterEncoding=UTF-8  </property> 

解決hibernate儲存資料到mysql中出現亂碼問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.