刚开始学struts2,就碰上个解决不了的中文乱码问题,让人郁闷到死!跪求哪位高人帮解答下啊.我有两个jsp,menu.jsp和missing.jsp,分别如下:menu.jsp的代码
---------------------------------------------------
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%><%@ taglib prefix="s" uri="/struts-tags" %><s:include value="missing.jsp" />
---------------------------------------------------missing.jsp的代码
---------------------------------------------------
<?xml version="1.0" encoding="GB2312" ?>
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
   <title>Missing Feature</title>
</head>
<body>
   <p>此功能正在开发中 . . .</p>
</body>
</html>
---------------------------------------------------如代码所示,在menu.jsp中用标签<s:include value="missing.jsp" />把包含了进去,但在运行时页面显示的字符串"此功能正在开发中"是乱码!当然了,如果直接执行missing.jsp,则正常显示汉字,没有乱码.请问有解决方法吗?顺便说一下,request的汉字编码问题我是解决了的.我已经在web.xml中加入了设置编码的filter,如下:
----------------------------------------------------
<filter>
  <filter-name>Set Character Encoding</filter-name>
  <filter-class>tutorial.SetCharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>GB2312</param-value>
  </init-param>
</filter>
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter><filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
----------------------------------------------------

解决方案 »

  1.   

    你每个JSP文件中对文本设置为什么要设置两次国标2312, contentType="text/html;   charset=GB2312"   pageEncoding="GB2312",去掉后面的 只用
     contentType="text/html;   charset=GB2312" 这个就可以了
      

  2.   

    <?xml   version="1.0"   encoding="GB2312"   ?>   是否多余的??
      

  3.   

    missing.jsp 的自身文件的编码和 menu.jsp的编码不一样,请设置成一样的就可以了。我说的不是charset 之类,而是文件自己的编码。
      

  4.   

    我也遇到了同样的问题,后来解决了。主要是请求页还有响应页面的<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>的pageEncoding要一致。
    然后就是struts.xml文件中要有
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    我起初的时候struts.xml文件中的编码和前面的不一样。改成一样就解决了