Hibernate+mysql 亂碼


      今天用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服務器和數據庫的編碼問題,同樣要注意持久化層數據傳輸的編碼問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM