您当前的位置: 首页 >  servlet

liaowenxiong

暂无认证

  • 1浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

用户在页面输入的中文数据,servlet如何获得正确的中文值

liaowenxiong 发布时间:2021-08-08 18:34:06 ,浏览量:1

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);
}
关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0410s