get方式传递中文和接受中文参数
import java.net.URLEncoder;
import java.net.URLDecoder;
加密
actx.getSession().put("subject",URLEncoder.encode(model.getPayName(),"utf-8"));
解密
new String(URLDecoder.decode(request.getParameter("body"),"utf-8"));
下面是web项目中的模拟,在地址栏请求方法1 ,方法1get方式请求方法2,并带有一个中文参数,方法2获取这个参数并打印在控制台
环境:Myeclipse
public void testT() throws IOException{
System.out.println("运行到这里了");
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
String url1="http://localhost:8085/struts2go/test/testT2.action?payname="+URLEncoder.encode("中文","UTF-8");
System.out.println("url1:"+url1);
response.sendRedirect(url1);
}
public void testT2(){
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
try {//URLDecoder.decode
System.out.println(request.getParameter("payname")); //失败的
System.out.println(URLDecoder.decode(request.getParameter("payname"),"UTF-8")); //失败的
//java.net.URLDecoder
System.out.println(java.net.URLDecoder.decode(request.getParameter("payname"),"UTF-8")); //失败的
String name = new String(request.getParameter("payname").getBytes("iso8859-1"),"utf-8"); //成功的
System.out.println(name);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}