关于jsp乱码问题

原创 2006年06月01日 10:06:00
关于jsp乱码问题,首先要看浏览器是否支持中文,得看浏览器的编码是否设置好.或者干脆在jsp页面头上加上<%@page language="java" contentType='text/html; charset=GBK"%>或者<%@page language="java" contentType='text/html; charset=gb2312"%>.
    其实对一些什么做也无法消除的中文乱码问题,就要考虑下提交方式是get还是post,用post比get安全的多,因为get常常会因为浏览器的比兼容性而出现意想不到的乱码,只要改成post,那么问题便解决啦.也即:doPost(HttpServletRequest request, HttpServletResponse response),如果非要用get的方法进行传递的话,那么可以这样解决:打开tomcat的server.xml文件,然后往其中加上URIEncoding=“GBK"  .重启tomcat就OK了.
    对于内容的提交我们还可以像下面这样设置,这样提交的任何信息都能正确地显示:
try
{
  byte[] tempByte = Str.getBytes("ISO-8859-1")
  Str = new String(tempByte,"GB2312");
//即new String(Str.getBytes("ISO-8859-1"),"GB2312")
}
catch ( Exception ex )
{
}
    还要提到的一点是数据库中的乱码.当写入时发生乱码.解决办法是配置一个filter. 代码如下:
jdbc: mysql: //localhost: 3306/db? useUnicode=true&characterEncoding = GBK
这样也便解决数据库中大部分的乱码问题.
    上面只是对数据库问题提到用filter,但鼓浪bbs上有人讲大都都可以用filter,他讲的是很有道理.
其实我们可以在tomcat的webapps/servlet-examples目录中找到SetCharacterEncodingFilter类的源代码.如下:
    package filters;
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.UnavailableException;
    public class SetCharacterEncodingFilter implements
Filter{
      protected String encoding=null;
      protected Filter Config filterConfig=null;
    protected boolean ignore=true;
    public void destroy(){
      this.encoding=null;
      this.filterConfig=null;
      }
      public void doFilter(ServletRequest request, Ser-
      vletResponseresponse,  FilterChainchain)
      throws IOException, ServletException{
      // Conditionally select and set the character a ncoding
        to be used
      if (ignore II (request.getCharacterEncoding()==
      null)){
 String encoding=selectEncoding(request);
      if (encoding !=null)
      request.setCharacterEncoding(encoding);
        }
      //Pass controlon to the nextfilter
      chain.doFilter(request, response);
      }
      public void init(FilterConfig filterConfig) throws
ServletException{
        this.filterConfig=filterConfig;
      this.encoding=filterConfig.getInitParameter("en-
coding" );
        String value=filterConfig.getInitParameter("ig-
nore");
        if (value == nu 11)
          this.ignore=true;
      elseif (value.equalsIgnoreCase("true"))
          this.ignore=true;
      else if (value.equalsIgnoreCase("yes"))
          this.ignore=true;
        else
        this.ignore = false;
      }
      protected String selectEncoding(ServletRequest re-
quest){
        return (this.encoding);
      }
但是毕竟filter是Servlet2.3版本才新增加的,多少有点限制啦

jsp乱码问题

  • 2012年11月29日 19:22
  • 4KB
  • 下载

jsp eclipse乱码问题

  • 2013年02月26日 10:29
  • 4KB
  • 下载

JSP中文乱码问题终极解决方案

转自:http://blog.csdn.net/beijiguangyong/article/details/7414247 在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述...
  • xyy511
  • xyy511
  • 2015年08月05日 15:23
  • 323

如何解决JSP页面显示乱码问题

  • 2008年01月17日 20:46
  • 39KB
  • 下载

回看JSP——解决提交form表单出现的乱码问题

最近又开始把JSP重新拿出来学一遍,有了不少的收货,有些之前没注意到的小细节也发现了解决的方法,比如form表单的乱码问题。乱码问题在写web程序时很常见,也很让人头疼,有时候一个疏忽就会出现乱码,接...

Jsp和Servlet中文乱码问题

  • 2012年09月13日 11:16
  • 410B
  • 下载

JSP+Servlet学习经验1:解决form表单提交后相应页面中文乱码的问题

初学JSP与Servlet的同学估计经常会遇到类似问题,有时输入的中文响应输出为问号(???),有时输出乱码,今天查了一些资料算是理清了问题的原因。 1.问题根源 问题的根源在于form表单提交数据时...

JSP乱码问题

  • 2013年12月16日 11:14
  • 33KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于jsp乱码问题
举报原因:
原因补充:

(最多只允许输入30个字)