public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 告诉浏览器,返回的是html页面,而且是以utf-8编码的
response.setContentType("text/html;charset=utf-8");
//request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
/*
*其实servlet默认是以ISO-8859-1解码中文,这个肯定会出现乱码,因为浏览器就是以utf-8编码后传给服务器的;
*name.getBytes("ISO-8859-1")这是以ISO-8859-1对错误的Unicode编码进行编码,重新获得utf-8编码,即字节数组;
*new String(name.getBytes("ISO-8859-1"), "utf-8")这步是以utf-8重新解码得到正确的Unicode编码
*正确的Unicode编码才能输出正确的中文字符
*/
String name2 = new String(name.getBytes("ISO-8859-1"), "utf-8");
double salary = Double.parseDouble(request.getParameter("salary"));
int age = Integer.parseInt(request.getParameter("age"));
System.out.println("name:"+name2);
System.out.println("salary:"+salary);
System.out.println("age:"+age);
}
当然也可以这样子:
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//这就是让servlet以utf-8解码参数值,那么就可以直接得到正确的中文值了
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
double salary = Double.parseDouble(request.getParameter("salary"));
int age = Integer.parseInt(request.getParameter("age"));
System.out.println("name:"+name);
System.out.println("salary:"+salary);
System.out.println("age:"+age);
}