1. 程式人生 > >java web開發過程中,中文亂碼問題

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原始碼。

JAVAC用UTF-8的encoding讀取java原始碼,編譯成UTF-8 encoding的二進位制碼(即.class),這是JVM對常數字串在二進位制碼(java encoding)內表達的規範。

      第三階段就是由Tomcat出來的網頁, 用的是contentType:

        第三階段是Tomcat(或其的application container)載入和執行階段二的來的JAVA二進位制碼,輸出的結果,也就是在客戶端見到的,這時隱藏在階段一和階段二的引數contentType就發揮了功效。

總結:在java web 專案開發過程中,難免會遇到各種各樣的問題,比如我遇到這個中文編碼問題就苦惱了我一早上,在此總結一下,在java web開發專案過程中,對於編碼問題,注意以下幾點:

     1.在hibernate配置檔案中,一定要注意加上

    2.注意jsp檔案中的編碼方式,注意是charset,而不是pageEncoding。