疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

JavaWeb--中文乱码小结


 

        JavaWeb--中文乱码小结
 
  0.纯粹html乱码:
 
  换个editor吧(有时候notepad都比sublime_text好用),最好是在<head></head>之间添加<meta charset="utf-8">
 
  1.jsp到jsp之间,表单
 
  (假设包含表单的页面为a,提交的action为b)
 
  get:不乱码
 
  post:乱码(在b页面用<%request.setCharacterEncoding("utf-8");%>)
 
  超链接形式的跳转,如果带有参数,本质上还是get方法,所以不会乱码
 
  2.jsp到jsp之间,转发,转发参数乱码(<jsp:forward>+<jsp:param>)
 
  需要在转发标签<jsp:forward>之前添加<%request.setCharacterEncoding("utf-8");%>
 
  3.servlet页面out对象输出中文,乱码
 
  在相应的方法中添加response.setContentType("text/hmtl;charset=UTF-8");
 
  4.jsp提交表单到servlet,servlet获取表单变量乱码
 
  若表单是post方法:在servlet相应方法中添加request.setCharacterEncoding("UTF-8");
 
  若表单是get方法:在servlet相应方法中添加request.setCharacterEncoding("UTF-8");,或者用getBytes转码并构造新的String,例如;
 
  String username = request.getParameter("username");
 
  String name = new String(username.getBytes("ISO-8859-1"), "UTF-8");
 
  总结一下:
 
  对于post方法提交的表单,获取表单数据的页面都要用request.setCharacterEncoding("UTF-8");对于get方式提交的表单,获取表单数据的页面既可以用request.setCharacterEncoding("UTF-8")也可以用getBytes()的方法构造新的String;对于使用<jsp:param>传递参数的情况,需要在传递参数前设定request.setCharacterEncoding("UTF-8");