第一种情况(不修改tomcat配置文件):
后台通过对中文字符编码
this.redirect("/login.jsp?isError=1&msg="+URLEncoder.encode("用户名或者密码错误"));
前台通过 request.getParameter("msg") 方法调用,然后调用URLDecoder.decode解码,输出msg的内容到页面上,结果msg的内容发生乱码
<%String msg =URLDecoder.decode(request.getParameter("msg"));%>
msg的内容乱码
后台修改为
this.redirect("/login.jsp?isError=1&msg="+URLEncoder.encode(URLEncoder.encode("用户名或者密码错误")));
msg显示正常的中文内容:用户名或者密码错误
原因:在调用request.getParameter()方法的时候,使用了服务器指定的编码格式自动解码一次,然后前台再解码一次即可
第二种情况(修改tomcat的配置文件):
this.redirect("/login.jsp?isError=1&msg="+URLEncoder.encode("用户名或者密码错误","utf-8"));
谷歌浏览器地址栏显示:http://localhost:8080/login.jsp?isError=1&msg=用户名或者密码错误(复制谷歌地址栏的内容,结果粘贴的结果与ie浏览器显示的内容一样)
修改tomcat的配置文件,添加 URIEncoding="utf-8"
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
修改为
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
msg显示正常的中文内容