解决jsp中后台传值中文到前台乱码的问题

临时要在一个jsp页面使用到后台传过来的一个参数,想到中文可能会乱码,所以一开始是这样写的:
1. 后台java代码传值过程:

this.setName(URLEncoder.encode("测试","UTF-8"));

2.前台jsp页面取值过程,测试一下:

<%
String username = request.getParameter("name");
username = URLDecoder.decode(username,"UTF-8");
System.out.println(username);
%>

按照猜预期的目标,因该是页面显示出来<%=username%>的内容是“测试”,但还不凑巧的是,显示出来是一堆乱码。最后查了一下,原来是Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流,所以这时候就清楚了,先将传过来的参数使用ISO-8859-1编码,再使用UTF-8解码,即可解决问题:

<%
String username = request.getParameter("name");
username = new String(username.getBytes("ISO-8859-1"), "UTF-8"); 
System.out.println(username);
%>

3.原文参考链接 点击这里

猜你喜欢

转载自blog.csdn.net/Lemostic/article/details/79504000