您的位置:首页 > Web前端 > JavaScript

使用Tiles模板JSP出现部分中文乱码

2006-12-14 15:56 507 查看
  
开发环境:JDK1.5+JBuilder2006+Struts1.3.5+Tomcat6

问题描述:使用Tiles模板JSP出现部分中文乱码
问题现象:页面的Body部分从Bean中获取中文字符串,但显示为问号,而页面中其他非Bean中获取的中文(即直接写在JSP中的中文)能正常显示。Tiles模板文件中已经设置了<%@ page contentType="text/html; charset=GBK"%>。尝试以下几种方法解决,但都未能奏效:
①在Body文件中也加入<%@ page contentType="text/html; charset=GBK"%>,反而使Body页面中的中文全部变为问号,但是在此种情况下不使用Tiles模板,而是单独显示Body部分的JSP文件,Body部分的所有中文又都能正常显示;
②在页面中对Bean中获取的字符串重新进行GBK字符集编码,但还是显示为问号。
③创建MyActionServlet继承ActionServlet,覆盖process方法,设置response.setContentType("text/html; charset=GBK"),结果使得页面的所有部分的中文都为乱码;
问题原因:不了解
解决方法:

①创建MyActionServlet继承ActionServlet,覆盖process方法
public class MyActionServlet extends ActionServlet {
……
    protected void process(HttpServletRequest request,
                           HttpServletResponse response) throws IOException,
            ServletException {
        request.setCharacterEncoding("GBK");
        response.setContentType("text/html; charset=GBK");
        super.process(request, response);
    }
……
}
②配置web.xml文件
……
<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>webapp. MyActionServlet</servlet-class>
<init-param>
……
③在需要显示中文的JSP文件中都加入<%@ page contentType="text/html; charset=GBK"%>;
④把struts-config.xml和Tiles的配置文件(如tiles-defs.xml)的<?xml version="1.0" encoding="ISO-8859-1" ?>中的ISO-8859-1改为GBK。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息