Java-黑蝙蝠  
My name is mozart0
外表涩苦但留醇香于舌尖
online
Adult Dating
公告
  • 多一份自信,多一份成功!
    多看一本书,多一份机遇!
    多一次微笑,多一份快乐!
日历
<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234
统计
  • 随笔 - 10
  • 文章 - 0
  • 评论 - 32
  • 引用 - 0

导航

常用链接

留言簿(6)

随笔分类(10)

随笔档案(10)

相册

天气预报

常去论坛

搜索

  •  

积分与排名

  • 积分 - 37632
  • 排名 - 1196

最新评论

阅读排行榜

评论排行榜

 

 

/**
 * 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 " ); %>
请大家有什么想法,以及有什么不对的地方请各位说明,写在留言上,大家一起讨论。
posted on 2006-10-12 22:00 黑蝙蝠 阅读(14158) 评论(7)  编辑  收藏 所属分类: Jsp(基础)
评论:
  • # re: jsp中文乱码终极解决方法  空空 Posted @ 2006-10-13 11:21
    以前我就按上面的写了,没有配置server.xml,一直都不行,可以写个servlet每次都自动去转  回复  更多评论   

  • # re: jsp中文乱码终极解决方法[未登录]  lansing Posted @ 2007-01-22 15:23
    刻意创建一个过滤器  回复  更多评论   

  • # re: jsp中文乱码终极解决方法  Hotboy Posted @ 2007-11-25 19:42
    创建过滤器,在Servlet执行之前调用该过滤器,就可以检查每个jsp页面的中文乱码拉
    在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" />
    这样就可以解决拉!!
    还有一个中文乱码处理,那就是struts 中的资源文件中可能会出现中文乱码,假如你要进行国际化的话!!
    我刚出道,希望能得到大家的支持! 有什么说错了的,请各位多多指教!!
    我的油箱:p.r.c.lipo@gmail.com  回复  更多评论   

  • # re: jsp中文乱码终极解决方法  chensong Posted @ 2008-04-27 16:39
    将浏览器的编码该位UTF-8,再将所有的GB2312改为UTF-8  回复  更多评论   

  • # re: jsp中文乱码终极解决方法  hutch25 Posted @ 2008-05-20 16:20
    写个过滤器不就OK了么
      回复  更多评论   

  • # re: jsp中文乱码终极解决方法  Lepoke Posted @ 2008-11-23 18:55
    呵呵。。还不错。基本上把JSP中该转的地方都能转了。就是有点麻烦。。  回复  更多评论   

  • # re: jsp中文乱码终极解决方法  coderlu Posted @ 2012-12-09 22:38
    楼主还看这个帐号的么?
    我想说,处理问题1的时候,设置pageEncoding就行了,contentType的作用比它要大些(详情:http://blog.csdn.net/lutinghuan/article/details/8275958)。代码如下:
    <%@ page pageEncoding="UTF-8"%>
      回复  更多评论   


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


网站导航:
 
 
Copyright © 黑蝙蝠 Powered by: 博客园 模板提供:沪江博客