Hibernate+mysql 亂碼

來源:互聯網
上載者:User

      今天用spring+hibernate+struts2寫了一個簡單的樣本程式,使用spring來管理hibernate處理資料,整合了 struts2,用了很長時間的webwork,使用struts2也還算是順手,顯示測試資料很順利,當開始測試錄入資料功能時,錄入漢字發生了問題, 錄入的漢字全部成了亂碼。

     最開始認為是在tomcat中中文傳輸出現了問題,加入了中文過濾器,但問題沒有解決,忽然想到了在struts2的屬性檔案中已經設定了編碼為gbk:struts.properties
struts.i18n.encoding=GBK  
struts.objectFactory=spring    應該不是在傳輸過程出的問題,在後台輸入傳入Action和Dao的資料,也全部能正常顯示。然後懷疑是mysql的設定問題,尋找設定mysql的資料庫編碼設定方法,在設定後仍沒有解決問題。直接在mysql中執行Insert into user ('nam') values('漢字'),mysql執行後資料顯示正常,說明資料庫的編碼也正確。鬱悶了,到底問題處在哪裡?在執行hibernateTemplate的save()方法之前,沒有出現中文亂碼問題,在資料庫這方面也測試沒有中文亂碼問題,只有在hibernate持久化層這裡的問題了。尋找持久化層傳輸資料到資料庫伺服器出現亂碼的問題,終於找到了問題:hibernate持久化層在傳輸過程中未設定編碼格式,這樣在傳輸資料到資料庫伺服器後已經是亂碼了,在oracle和sqlserver裡沒有出現傳輸亂碼問題,所以沒有想到會使這裡的問題。修改spring中關於資料來源的配置參數:資料庫連結方式:

   jdbc:mysql://localhost:3306/springexample?characterEncoding=utf-8
  在執行資料錄入後,終於中文顯示正常了。在應用hibernate管理mysql資料庫是不僅要注意web伺服器和資料庫的編碼問題,同樣要注意持久化層資料轉送的編碼問題。

相關文章

聯繫我們

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