servlet转发到jsp乱码怎么解决

悬赏:5 发布时间:2008-06-29 提问人:qi1987 (初级程序员)

做了简单的jsp 分页 ,下一页的时候提交到servlet处理,但转发到jsp的时候总是乱码显示。
该问题已经关闭: guanbi

回答

做下转码处理 在
servlet中
happyanyday (初级程序员) 2008-06-29
首先在JSP页面设置字符编码为GBK,然后在JSP中的请求对象也要设置字符编码为GBK,最后在web.xml中配置一个过滤器,在过滤器中将请求数据的字符编码设置成GBK即可。
书山墨客 (初级程序员) 2008-06-29
看一下这个帖子介绍的方法
引用
http://hi.baidu.com/mainboyy/blog/item/21fb521727eb9c044a90a713.html
congjl2002 (资深程序员) 2008-06-29
设置response、request的编码格式试一下
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
这样应该就没有什么问题呐。
skingyang (初级程序员) 2008-06-29
mewleo (中级程序员) 2008-06-29
自己写一个过滤器,将所有的字符编码为UTF-8 就可以了.最好把页面的编码也设置成utf-8 或者统一用GBK 也可以! 祝你好运!!
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 * 字符编码过滤器,为了解决乱码问题.
 * @author guanminglin
 */
public class EncodingFilter implements Filter {

    public void init(FilterConfig arg0) throws ServletException {
       // throw new UnsupportedOperationException("Not supported yet.");
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//        throw new UnsupportedOperationException("Not supported yet.");
        request.setCharacterEncoding("UTF-8");

// 传递控制到下一个过滤器
chain.doFilter(request, response); 
    }

    public void destroy() {
      //  throw new UnsupportedOperationException("Not supported yet.");
    }

}

然后在web.xml中添加下面的代码就可以了!
<filter>
       <filter-name>EncodingFilter</filter-name>
       <filter-class>org.news.comm.EncodingFilter</filter-class>         
  </filter>   
  <filter-mapping>
       <filter-name>EncodingFilter</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>
gml520 (初级程序员) 2008-06-30
补充一下: 在xml 中的
引用
<filter-class>org.news.comm.EncodingFilter</filter-class>


需要根据自己的包来命名,org.news.comm.EncodingFilter 是我这里的包.
gml520 (初级程序员) 2008-06-30
把servlet 上面的数据发到jsp上面去,得发一个头文件
request.setCharacterEncoding("GBK");这里必须得跟页面上的一样
yupeng_raul7 (初级程序员) 2008-07-03
1.首先检查你所有的页面是不是都是统一编码
2.设定一个断点调试,看是在哪各环节出现的乱码,是插入数据库还是读取数据库,还是显示到页面的。这样你就可以分辨出来乱码的出现

如果是数据库就是乱码的话,而且用的是微软的数据库的话,推荐使用jtds1.2.jar数据库连接驱动+过滤器来解决。
yourgame (初级程序员) 2008-07-03

第一,确定所有页面都是统一编码,建议使用UTF-8
第二,确定从页面到servlet,servlet里接受到的不为乱码。在页面中使用URLEncoder.encode()转换下中文。也可以用JS中的encodeURIComponent方法转换
第三,从servlet到页面,在输出前使用
response.setCharacterEncoding("text/html;charset=utf-8")

OK!
east_java (初级程序员) 2008-07-04
网上查查过滤器,万事OK
csjiaju (初级程序员) 2008-07-04
写个过滤器 很简单的
shajindan (初级程序员) 2008-07-04
这个我好像回答过了,但是我今天碰到一个乱码问题

LZ描述的有点模糊,
你试试用response.setContentType("text/html;charset=GBK");

request.setCharacterEncoding("GBK");

OK!
yupeng_raul7 (初级程序员) 2008-07-05
自定义一个servlet继承filter接口,然后在它的doFilter方法内设置 request.setCharacterEncoding("UTF-8");
然后在web.xml中配置,
<url-pattern>/*</url-pattern> 代表过滤所有的请求
xiaoqiqianqian (初级程序员) 2008-07-06