这种情况应该是没设置请求和响应的编码(只针对post请求有效,对get请求无效,下面再说get请求的)
//设置请求的字符集编码
request.setCharacterEncoding("UTF-8");
//设置响应的字符集编码
response.setContentType("text/html;charset=UTF-8");
例子:
<!--index.jsp-->
<%@ page language="java" import="java.util.*,java.text.*" pageEncoding="UTF-8" errorPage="error.jsp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%! public String getDateStr(){
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
String strDate = simpleDateFormat.format(new Date());
return strDate;
} %>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
现在的日期时间:<%=getDateStr() %>
<form action="test.do" name="myform" method="post">
输入要传递的信息:<input type="text" name="info"/>
<input type="submit" value="确定">
</form>
</body>
</html>
//TestServlet
package servlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
//设置请求的字符集编码
request.setCharacterEncoding("UTF-8");
System.out.println("请求到达服务端...");
//接收客户端的请求数据;
String info=request.getParameter("info");
System.out.println("服务端收到客户端的数据:"+info);
//设置响应的字符集编码
response.setContentType("text/html;charset=UTF-8");
//将接收的消息,以响应的方式输出到客户端
PrintWriter out =response.getWriter();
out.println("info:"+info);
//释放资源
out.flush();
out.close();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>web_01</display-name>
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>servlets.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/test.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
对于get请求,这种方法无效,可以采用以下:
在本机上找到Tomcat的安装目录 conf目录下的server.xml文件,打开
找到下面这段,加上URIEncoding="UTF-8"