网上的教程都是以Tomcat以前版本为例子的!
下面说的是::最新版的Tomcat 9.0.27
在Java Web项目中:
JSP客户端网页需要给Tomcat服务器传递Get请求(参数中有中文):
有俩中情况:
一是:<form action=”/AServlet?name=张三你好” method=”get”> 其余省略!
而是:在浏览器栏里直接输入:http://localhost:8080/day21_5/AServlet?name=张三你好
由于最新版本的Tomcat严格遵循《 RFC 7230 and RFC 3986》这两个标准!
Get请求时,get的URL参数中不能有:中文,或者其他不被允许的字符!
但是我们为了方便,硬是要传递中文get参数!那么怎么解决乱码问题??
客户端JSP页面最好使用 UTF-8 编码格式!
Tomcat服务器上的后台代码的Java源文件,也要使用UTF-8格式!
而且已经知道了:最新版本的Tomcat的URI传输的格式也是UTF-8哦!
那么:在客户端的JSP页面中,把get请求参数中的中文汉字,使用URLEncoder.encode(“张三你好”,”UTF-8”);把这几个汉字强制编码成为UTF-8编码!
<%@ page import="java.net.*" %> |
<% String user="张三你好"; user = URLEncoder.encode(user,"UTF-8"); pageContext.setAttribute("user",user); %> |
<form action=”/AServlet?name=${user}” method=”get”> |
在Tomcat服务器后台的代码中:再使用URLDecoder.decode(“”,”UTF-8”);即可!
String value=request.getParameter(user); try { value=URLDecoder.decode(value, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } System.out.println("乱码解决后用户名:" + value); |
即可解决乱码问题!
Tomcat越来越方便啦!
注意:URLEncoder类与URLDecoder类都在java.net包中!
强烈建议:要在编程中使用英文!