HTMer » 网站建设 » 解决Apache Tomcat中shtml文件include jsp文件时中文显示乱码的方法

解决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即可。

顶一下 ▲()   踩一下 ▼()

相关文章