黑马程序员技术交流社区
标题:
为什么在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&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