解決Apache Tomcat中shtml文件include jsp文件時中文顯示亂碼的方法

今天在Apache Tomcat中調試jsp程序時遇到一個問題,我發現隨便建一個shtml文件,然後裏面include(包含)一個jsp文件,jsp文件的內容很簡單,直接輸出一段中文字,發現在瀏覽器中運行輸出的都是亂碼,當然我的Apache Tomcat中已經開啓了SSI功能,是支持shtml的。於是在網上搜索答案,說在jsp文件的頭部加入一行語句:<%@ page contentType="text/html; charset=gbk"%>,我加了之後依然無效,百思不得其解。最終經過無數次調試後纔有結果。

    這裏我省略在Apache Tomcat中開啓SSI功能用來支持shtml的方法,詳情請參看本站文章:《開啓Apache Tomcat中的SSI功能(用來支持shtml)》

    其實造成shtml文件include jsp文件時中文顯示亂碼的原因不是jsp代碼的問題,問題還是出在Apache Tomcat的配置上,具體的解決方法如下:

    1、找到$tomcat/conf/web.xml文件(其中的$tomcat爲Apache Tomcat的安裝路徑)

    2、用記事本打開web.xml,找到如下代碼:

    <servlet>
        <servlet-name>ssi</servlet-name>
        <servlet-class>
          org.apache.catalina.ssi.SSIServlet
        </servlet-class>
        <init-param>
          <param-name>buffered</param-name>
          <param-value>1</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>0</param-value>
        </init-param>
        <init-param>
          <param-name>expires</param-name>
          <param-value>666</param-value>
        </init-param>
        <init-param>
          <param-name>isVirtualWebappRelative</param-name>
          <param-value>0</param-value>
        </init-param>
        <load-on-startup>4</load-on-startup>
    </servlet>

    3、在上面代碼<load-on-startup>4</load-on-startup>上面加入如下代碼:

<init-param>
        <param-name>inputEncoding</param-name>
        <param-value>gbk</param-value>
</init-param>
<init-param>
        <param-name>outputEncoding</param-name>
        <param-value>gbk</param-value>
</init-param>

    代碼中的gbk可根據你實際情況來改變,因爲我的網頁都是使用的gbk編碼,所以這裏我用gbk;如果你的網頁使用的是utf-8編碼,那你設置成utf-8即可。

    4、重啓Apache Tomcat即可。

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