第一个页面:
学生姓名:<input type="text" value="${Sinfo.student_Name}"></input>
<a href="Edit.jsp?sname=${Sinfo.student_Name}">修改</a>
第二个页面:Edit.jsp
学生姓名:<input type="text" name="student_Name" value="${param.sname}"></input>
值传进第二个页面的text中出现乱码,大神们指点下
学生姓名:<input type="text" value="${Sinfo.student_Name}"></input>
<a href="Edit.jsp?sname=${Sinfo.student_Name}">修改</a>
第二个页面:Edit.jsp
学生姓名:<input type="text" name="student_Name" value="${param.sname}"></input>
值传进第二个页面的text中出现乱码,大神们指点下
第一、统一编码其中统一编码涉及到的有页面编码、tomcat服务器编码、项目的编码。
第二、采用过滤器解决乱码,编写了一个EnCodingFilter.java类继承了Filter,通过重写doFilter方法来设置request和response的编码方式。
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
<%@ page language="java" pageEncoding="UTF-8"%>
login_name = encodeURI(encodeURI(login_name));
2.在第二个页面用 表达式解码
loginName = java.net.URLDecoder.decode(loginName,"UTF-8");
你用request.setCharacterEncoding("utf-8"),response.setCharacterEncoding("utf-8")或gbk是没有用的
你要么用4楼的方式,
或者用:String name = request.getParameter("name");name = new String(name.getBytes("utf-8"),"iso_8859_1");
import java.io.IOException;import javax.servlet.*;
public class EncodingFilter implements Filter{
private FilterConfig filterConfig=null;
private String encoding="utf-8";
public void destroy(){
filterConfig=null;
encoding=null;
}
public void doFilter(ServletRequest request,ServletResponse response,
FilterChain filterChain)throws IOException,ServletException{
request.setCharacterEncoding(encoding);
request.setCharacterEncoding(encoding);
filterChain.doFilter(request, response);
} public void init(FilterConfig filterConfig)throws ServletException{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
}
}
在你的Sinfo类中,定义student_Name_prama,
public String getStudent_Name_prama() {
student_Name_prama = URLEncoder.encode(student_Name,"UTF-8");
return student_Name_prama;
}
然后你的参数:
<a href="Edit.jsp?sname=${Sinfo.student_Name_prama}">修改</a>