java web開發過程中,中文亂碼問題
在解決中文亂碼之前,我們先來看看jsp檔案中charset與pageEncoding的區別:
1.首先,charset是指伺服器傳送給客服端時的內容編碼,charset=utf-8表示頁面的輸出方式為utf-8.而pageEncoding是jsp檔案本身的編碼。
2.在jsp標準的語法中,如果pageEncoding屬性存在,那麼JSP頁面的字元編碼方式就由pageEncoding決定,否則就由charset決定,如果charset也不存在,JSP頁面的字元編碼就採用預設的ISO-8859-1。
3.編碼過程分為三個階段:
第一階段會用pageEncoding
第一階段是jsp(以中文系統為例,編輯的jsp一般編碼方式為GBK)編譯成.java,它會根據pageEncoding(最好與系統編碼格式相同)的設定讀取jsp,結果是由指定的編碼方案翻譯成統一的UTF-8 JAVA原始碼(即.java),如果pageEncoding設定錯了,或沒有設定,出來的就是中文亂碼。
第二階段會用utf-8到utf-8:
第二階段是由JAVAC的JAVA原始碼至java byteCode的編譯,不論JSP編寫時候用的是什麼編碼方案,經過這個階段的結果全部是UTF-8的encoding的java原始碼。
第三階段就是由Tomcat出來的網頁, 用的是contentType:
第三階段是Tomcat(或其的application container)載入和執行階段二的來的JAVA二進位制碼,輸出的結果,也就是在客戶端見到的,這時隱藏在階段一和階段二的引數contentType就發揮了功效。
總結:在java web 專案開發過程中,難免會遇到各種各樣的問題,比如我遇到這個中文編碼問題就苦惱了我一早上,在此總結一下,在java web開發專案過程中,對於編碼問題,注意以下幾點:
1.在hibernate配置檔案中,一定要注意加上
2.注意jsp檔案中的編碼方式,注意是charset,而不是pageEncoding。