spring+hibernate+struts2應用mysql數據庫亂碼問題 (轉)

spring+hibernate+struts2應用mysql數據庫亂碼問題

在spring配置文件裏url末尾添加
?characterEncoding=gbk,沒有變化。
在struts配置文件裏寫
<constant name="struts.i18n.encoding" value="UTF-8" />
還是亂碼。
最後發現jsp頁面裏沒改過來。
改爲<%@ page language="java" pageEncoding="UTF-8"%>
不再亂碼,而且去掉spring裏寫的那一句,也沒亂碼。
補充:spring中應該用轉義字符才行。
<property name="url"
            value="jdbc:mysql://localhost/mysql?useUnicode=true&amp;characterEncoding=gbk"/>
數據庫默認latin1,數據庫建表默認utf8,連接使用gbk,中文不再亂碼。
---相關資料-----------------------------------
       今天用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服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章