天行健,君子以自强不息

BlogJava 首页 新随笔 联系 聚合 管理
  12 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks
/**
 * 21:24 2006-10-12
 * @author blackbat 
 * @title jsp中文乱码终极解决方法
 */

let's go。
一 找出问题的根源
   乱码可能出现的地方:1 jsp页面中 
                       2 jsp页面之间相互传参的参数
                       3 与数据库中数据的存取
   基本归纳为以上几种。

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

三解决方法:
1的解决方法 
<% @ page contentType = " text/html;charset=gb2312 "   %>
加上这句解决jsp页面中的中文乱码显示,tomcat编译完后向客户端输出的html文件不是采

用中文编码,所以会导致乱码产生。

2的解决方法
2.1 
<% request.setCharacterEncoding( " gb2312 " ); %>
加上这句解决jsp页面中的中文参数传递乱码。
因为浏览器默认使用的编码是“UTF-8”发送请求参数。
我们把它改为"gb2312"就ok了。

2.2 String(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");
这句的意思是,把传来的参数全部编码转换成gb2312,这样做的缺点是每次传来一个参数

都要这样写,很麻烦。

同样可通过设置server.xml配置文件来实现。
< Connector
port ="8080"                maxHttpHeaderSize ="8192"
               maxThreads
="150"  minSpareThreads ="25"  maxSpareThreads ="75"
               enableLookups
="false"  redirectPort ="8443"  acceptCount ="100"
               connectionTimeout
="20000"  disableUploadTimeout ="true"   URIEncoding ="gb2312" />
但是这样就应用到整个webapp中去了。

另:
<% @page pageEncoding = " gb2312 " %>
此句是为了让jsp编译器能正确地解码含有中文字符的jsp页面。

其它方法还可以修改web.xml文件,配置一个过滤器。其原理都一样,只是换种方式而已。
有的书上专门写了一个函数来解决乱码,实际上对比一下就知道那种解决方法的好与坏。
回过头来一看,解决乱码也不过如此。
ok,实际就加上这3句搞定问题。
<% @page pageEncoding = " gb2312 " %>
<% @ page contentType = " text/html;charset=gb2312 "   %>
<% request.setCharacterEncoding( " gb2312 " ); %>
请大家有什么想法,以及有什么不对的地方请各位说明,写在留言上,大家一起讨论。

转载自:http://www.blogjava.net/blackbat/archive/2008/04/27/74865.html
posted on 2009-08-10 22:18 yill 阅读(173) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: