ssh頁面中文亂碼問題

  今天碰到一個問題,在我作的ssh項目中,程序在一個action中將一串中文提示語句 —— 一個字符串存在session中(且不討論用session存這個合不合理),在另一個action渲染的jsp頁面中用el表達式取出來呈現,形如:${requestScope.noright}。html

  在個人開發環境中(Tomcat6 + MyEclipse8.5),這一個提示語句顯示正常,並無出現亂碼的情況。可是當我將其部署到was的測試環境時,這一句提示信息顯示成了「????????」,一串問號,而頁面其餘地方都沒有這個問題。java

  首先想是什麼致使tomcat和was存在差別,後來回想起來,以前在tomcat conf文件夾下的server.xml中加過這麼一段配置tomcat

    <Connector port="9080" 
               protocol="HTTP/1.1" 
               connectionTimeout = "20000" 
               redirectPort ="8443" 
   	       URIEncoding ="UTF-8"
    />

,將這段配置註釋後,本地也出現一樣狀況。服務器

  was上是不能如上配置的,因而在繼續找問題,百度知道上找到這個回答:session

http://zhidao.baidu.com/link?url=5c5enTpHLCsPvcGhG0McFVLUBJN4ar_rbwF95ISzHyGA0GP4N9JjeOpYmvmTBebZrhKV0mTN26l86pIsSmTRFq
pageEncoding是jsp文件自己的編碼

contentType的charset是指服務器發送給客戶端時的內容編碼

JSP要通過兩次的「編碼」,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是由Tomcat出來的網頁, 用的是contentType。

第一階段是jsp編譯成.java,它會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯成統一的UTF-8 JAVA源碼(即.java),若是pageEncoding設定錯了,或沒有設定,出來的就是中文亂碼。

第二階段是由JAVAC的JAVA源碼至java byteCode的編譯,不論JSP編寫時候用的是什麼編碼方案,通過這個階段的結果所有是UTF-8的encoding的java源碼。

   因而在jsp頁面上加入ssh

<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>

就顯示正常了。jsp

相關文章
相關標籤/搜索