1.html页面中文乱码
     通常,在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。例如,你的 JSP文件是以GBK为编码保存的,而在JSP中却指定pageEncoding="UTF-8",就会引起JSP内部定义的字符串为乱码。 

2.URL传递参数中文乱码与表单get方法出现中文乱码
     因为在默认情况下使用ISO-8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码),而不使用该参数对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码)。要解决该问题,应该在Tomcat的配置文件的Connector标签中设置URIEncoding="GBK"属性。
  
3.以POST方法提交的表单数据中有中文乱码
     由于Web容器默认的编码方式是ISO-8859-1,在Servlet/JSP程序中,通过请求对象的getParameter()方法得到的字符串是以ISO-8859-1转换而来,这是导致乱码产生的原因之一。为了避免容器以ISO-8859-1的编码方式返回字符串,对于以POST方法提交的表单数据,可以在获取请求参数值之前,调用request.setCharacterEncoding("GBK"),明确指定请求正文使用的字符编码方式是GBK。在向浏览器发送中文数据之前,调用response.setContentType("text/html;charset=GBK"),指定输出内容的编码方式是GBK。
 
1.对于JSP页面,在获取请求参数值之前,写上下面的代码: 
  <%request.setCharacterEncoding("GBK");%> 
2.为了指定输出内容的编码格式,设置page指令contentType属性,如下: 
  <%@ page contentType="text/html; charset=GBK" %> 
3.在Web容器转换JSP页面后的Servlet类中,会自动添加下面的代码: 
  response.setContentType("text/html; charset=GBK"); 

***对于POST表单提交的数据,在获得数据的JSP页面中request.setCharacterEncoding要和生成提交该表单的JSP页面的 response.setCharacterEncoding设置成相同的值。 


get与post还有url都可以用的解决方法:
  String color = request.getParameter("color"); 
  color=new String(color.getBytes("ISO-8859-1"),"GBK"); 
     在第一行,调用getParameter()方法得到的字符串color的Unicode值是以ISO-8859-1编码转换而来,调用color.getBytes("ISO-8859-1"),将得到原始的GBK编码值,接着,对new String()的调用将以GBK字符集重新构造字符串的Unicode编码。