文章目录
1 实验目的
- 了解JSP页面乱码问题;
- 掌握URL传递参数乱码问题解决方法;
- 掌握表单参数乱码问题解决方法;
2 实验原理
JSP程序通过URL链接传递参数时,但参数有中文是会乱码。解决方法如下:
- 将获取的参数二次编码。先将参数按ISO8859-1编码转换为字节数组,再将字节数组按UTF-8重新生成字符串:
String param = new String((request.getParameter("param")).getBytes("iso8859-1"),"UTF-8");
- 修改Tomcat服务器的配置文件。修改 Tomcat 的 config 目录下的
server.xml
文件,在原来的代码中添加URI编码设置URIEncoding="UTF-8"
,重启Tomcat服务器即可,修改后的代码如下:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
- 解决表单提交中文乱码问题,在调用
request.getParameter("param");
之前,按指定的编码(如UTF-8)从request对象中获取参数,只需添加语句:
<%
request.setCharacterEncoding("UTF-8");
%>
3 实验内容与步骤
3.1 解决URL传递参数中文乱码问题
3.1.1 编写下面的encode1.jsp。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>URL传递参数编码测试</title>
</head>
<%
String param=request.getParameter("param");
%>
<body>
<a href="encode1.jsp?param='中国'">请单击链接</a><br>
提交的中文参数为:<%=param %>
</body>
</html>
3.1.2 访问
在浏览器地址栏输入:http://localhost:8080/prac02_encode/encode1.jsp
如图3-1所示。
图3-1
单击链接,结果如图3-2所示。
图3-2
出现乱码。
3.1.3 修改Tomcat配置文件
修改Tomcat的config目录下的server.xml,添加URIEncoding=“UTF-8”,修改后的代码如下:
重启Tomcat服务器,重新运行程序,结果如图3-3所示。
图3-3
3.2 解决表单提交中文乱码问题
3.2.1 编写encode2.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>form中文处理示例</title>
</head>
<body>
<font size="2">
下面是表单提交内容:
<form action="encode2.jsp" method="post">
用户名:<input type="text" name="userName" size="10"/>
密码:<input type="password" name="password" size="10"/>
<input type="submit" value="提交">
</form>
</font><br/>
<font size="2">下面是表单提交以后用request取到的表单数据:<br>
<%
String userName=request.getParameter("userName");
String password=request.getParameter("password");
if(null!=userName){
out.println("表单提交的userName的值=" + userName + "<br>");
out.println("表单提交的password的值=" + password + "<br>");
}
%>
</font>
</body>
</html>
3.2.2 访问
在浏览器地址栏输入:http://localhost:8080/prac02_encode/encode2.jsp
如图3-4所示。
图3-4
输入表单内容,然后单击提交,弹出如图3-5所示界面,出现乱码情况。
图3-5
3.2.3 添加语句
在代码encode2.jsp的body
域的前部增加语句,令其指定按UTF-8编码从request对象中取参数。
<% request.setCharacterEncoding("UTF-8") %>
4 思考题
- 理解URL传递参数中文乱码问题解决方法。
- 理解表单乱码问题的解决方法。