jsp乱码问题的一些解决方法

jsp乱码问题的一些解决方法  
   
  一、JSP页面显示乱码    
  下面的显示页面(display.jsp)就出现乱码:    
  <html>    
  <head>    
  <title>JSP的中文处理</title>    
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">    
  </head>    
   
  <body>    
  <%    
  out.print("JSP的中文处理");    
  %>    
  </body>    
  </html>    
  对不同的WEB服务器和不同的JDK版本,处理结果就不一样。原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在 JSP页面中指定编码方式(gb2312),即在页面的第一行加上:<%@   page   contentType="text/html;   charset=gb2312"%>,就可以消除乱码了。完整页面如下:    
  <%@   page   contentType="text/html;   charset=gb2312"%>    
  <html>    
  <head>    
  <title>JSP的中文处理</title>    
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">    
  </head>    
   
  <body>    
  <%    
  out.print("JSP的中文处理");    
  %>    
  </body>    
  </html>    
   
  二、表单提交中文时出现乱码    
  下面是一个提交页面(submit.jsp),代码如下:    
  <html>    
  <head>    
  <title>JSP的中文处理</title>    
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">    
  </head>    
   
  <body>    
  <form   name="form1"   method="post"   action="process.jsp">    
  <div   align="center">    
  <input   type="text"   name="name">    
  <input   type="submit"   name="Submit"   value="Submit">    
  </div>    
  </form>    
  </body>    
  </html>    
  下面是处理页面(process.jsp)代码:    
  <%@   page   contentType="text/html;   charset=gb2312"%>    
  <html>    
  <head>    
  <title>JSP的中文处理</title>    
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">    
  </head>    
   
  <body>    
  <%=request.getParameter("name")%>    
  </body>    
  </html>    
  如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和 GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding ("gb2312")对请求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下:    
  <%@   page   contentType="text/html;   charset=gb2312"%>    
  <%    
  request.seCharacterEncoding("gb2312");    
  %>    
  <html>    
  <head>    
  <title>JSP的中文处理</title>    
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">    
  </head>    
   
  <body>    
  <%=request.getParameter("name")%>    
  </body>    
  </html>    
   
  三、数据库连接出现乱码    
  只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。    
   
  四、数据库的显示乱码    
  在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转换类来处理,实现如下:    
  public   class   Convert   {    
  /**   把ISO-8859-1码转换成GB2312    
  */    
  public   static   String   ISOtoGB(String   iso){    
  String   gb;    
  try{    
  if(iso.equals("")   ||   iso   ==   null){    
  return   "";    
  }    
  else{    
  iso   =   iso.trim();    
  gb   =   new   String(iso.getBytes("ISO-8859-1"),"GB2312");    
  return   gb;    
  }    
  }    
  catch(Exception   e){    
  System.err.print("编码转换错误:"+e.getMessage());    
  return   "";    
  }    
  }    
  }    
  把它编译成class,就可以调用Convert类的静态方法ISOtoGB()来转换编码。

你可能感兴趣的:(jdk,html,Web,jsp,浏览器)