在学习Servlet时想用地址栏传递中文,最后发现中文的参数直接被截断,无法传递到浏览器。为了不让浏览器截断中文参数就需要在传递中文时将将中文进行编码成浏览器可以传递的参数。
String str = "密码错误";
String msg = URLEncoder.encode(str, "utf-8");
response.sendRedirect("login?msg=" + msg);
这时我们将“密码错误”这个参数用utf-8进行编码,再次传递的效果如下:
http://localhost:8080/my_sever/login?msg=%E5%AF%86%E7%A0%81%E9%94%99%E8%AF%AF
此时的参数传递过来了 ,但是不是我们需要的中文,此时需要用new String进行解码:
if(msg != null){
msg = new String(msg.getBytes("ISO-8859-1"),"UTF-8");
out.println("<tr><td colspan=\"2\">"+msg+"</td></tr>");
}
网友评论