zl程序教程

您现在的位置是:首页 >  后端

当前栏目

jsp中文乱码终极解决方法(转)

JSP中文方法 解决 乱码 终极
2023-09-27 14:28:06 时间

一, 找出问题的根源
乱码可能出现的地方:

  1. jsp页面中
  2. jsp页面之间相互传参的参数
  3. 与数据库中数据的存取

基本归纳为以上几种.

二, 寻找解决方案

  1. 出现在jsp页面中,是由于没有设置jsp页面的中文字符编码.
  2. 出现在jsp页面之间相互传参,是由于参数没有设置正确的字符编码.
  3. 以上2个问题解决了,那么存到数据库中,自然就不存在乱码。除非你对存入到数据库里的数据再次进行编码.

三, 解决方法

  1的解决方法:

1 <% @ page contentType = " text/html;charset=gb2312 " %>

  加上这句解决jsp页面中的中文乱码显示,tomcat编译完后向客户端输出的html文件不是采用中文编码,所以会导致乱码产生。

  2的解决方法:

    2.1

1 <% request.setCharacterEncoding("gb2312"); %>

    加上这句解决jsp页面中的中文参数传递乱码。因为浏览器默认使用的编码是“UTF-8”发送请求参数。我们把它改为"gb2312"就ok了。

    2.2

1 String(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");

    这句的意思是,把传来的参数全部编码转换成gb2312,这样做的缺点是每次传来一个参数都要这样写,很麻烦.

    同样可通过设置server.xml配置文件来实现:      

1 < Connector
2 port ="8080"                maxHttpHeaderSize ="8192" 
3                maxThreads ="150"  minSpareThreads ="25"  maxSpareThreads ="75" 
4                enableLookups ="false"  redirectPort ="8443"  acceptCount ="100" 
5                connectionTimeout ="20000"  disableUploadTimeout ="true"   URIEncoding ="gb2312" /> 

    但是这样就应用到整个webapp中去了.

    另,

1 <% @page pageEncoding = "gb2312" %> 

    此句是为了让jsp编译器能正确地解码含有中文字符的jsp页面.

  其它方法还可以修改web.xml文件,配置一个过滤器。其原理都一样,只是换种方式而已。有的书上专门写了一个函数来解决乱码,实际上对比一下就知道那种解决方法的好与坏。回过头来一看,解决乱码也不过如此.ok,实际就加上这3句搞定问题:

1 <% @page pageEncoding = "gb2312" %> 
2 <% @ page contentType = "text/html;charset=gb2312"   %> 
3 <% request.setCharacterEncoding("gb2312"); %> 

  今天在部署一个webservices程序的时候,从页面获取数据的servlet出现了乱码问题,在servlet中我已经把request.setCharacterEncoding("GB2312");这段文字加入到代码中去,但是还是出现乱麻问题。到网上找资料,如下:JAVA是Unicode编码,你先转换成ISO8859-1,然后再转换成GBK或是GB2312.

  ref:http://blog.csdn.net/csh624366188/article/details/6657350