黑马程序员技术交流社区

标题: 为什么在Servlet中用转发技术后都是错码呢??? [打印本页]

作者: 陈家林    时间: 2013-11-10 01:37
标题: 为什么在Servlet中用转发技术后都是错码呢???
为什么在Servlet中用转发技术后都是错码呢???
为什么在Servlet中用转发技术后都是错码呢???
作者: 陈家林    时间: 2013-11-10 01:47
是转发的文件 是 html文件就会有错码
作者: 低调的奢华    时间: 2013-11-10 07:17
你描述的有点模糊,你统一编码了么。
作者: pireteMrZ    时间: 2013-11-10 10:38
前台页面和后台处理的编码格式不一样就会出现乱码。自定义过滤器,把jsp页面的编码设置一下,tomcat服务器设置一下,一般就不会出现这种问题了。
1.网页编码设置为utf-8
  <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
2.服务器设置为utf-8
  如tomcat的server.xml中
  <Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443"  
        URIEncoding="UTF-8"/>
  设置为utf-8
3.自定义过滤器设置字符编码为utf-8
  request 和response都设置为utf-8
  setCharacterEncoding("UTF-8");
  如下:
Java代码  
import java.io.IOException;  
import javax.servlet.FilterChain;  
import javax.servlet.ServletException;  
import javax.servlet.ServletRequest;  
import javax.servlet.ServletResponse;  
import javax.servlet.http.HttpServletRequest;  
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;  
public class LifeOnlineFilter extends StrutsPrepareAndExecuteFilter {  
   
    @Override  
    public void doFilter(ServletRequest req, ServletResponse res,  
            FilterChain chain) throws IOException, ServletException {  
         
        HttpServletRequest request=(HttpServletRequest) req;  
        String uri=request.getRequestURI();  
        req.setCharacterEncoding("UTF-8");  
        res.setCharacterEncoding("UTF-8");  
        if(uri.indexOf("Androidservice")!=-1){  
            System.out.println("FilterDispetor.doFilter():true");  
            chain.doFilter(req, res);  
        }else{  
            super.doFilter(req, res, chain);  
        }  
    }  
}  
         

4.链接数据库设置为utf-8
<property name="url" value="jdbc:mysql://localhost:3306/lifeonline?useUnicode=true&amp;characterEncoding=UTF-8">
</property>

5.把数据库编码设置为utf-8
  如mysql数据如,在配置的时候勾选上utf-8原先mysql默认的为latin
  总的来说只要把各个层次的编码设置为一致就不会乱码,
  有些地方说设置成gbk不乱码,最好用utf-8因为其几乎支持全世界的所有语言
作者: 硬件之家    时间: 2013-11-10 11:04
在Servlet中和页面中把编码格式统一下。设置成UTF-8或者GB2312




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2