乱码浅谈

凡是开发过web应用的程序员,肯定都或多或少的遇到过乱码的困惑,笔者也不例外,现根据网上的资料和个人的经验总结如下:

在tomcat4中,get 与 post 的编码是一样的,所以只要在过滤器中通过 request.setCharacterEncoding 设定一次就可以解决 get 与 post 的问题。

而在tomcat5 中,get 与 post 的处理是分开进行的,所以在此我们重点讨论。

表单提交的方式不外乎Get 和 Post 两种,我们分别讨论:

Post:表单中POST方式提交的数据,只要在接收数据的JSP中正确request.setCharacterEncoding参数,即将对客户端请求进行重新编码的编码设置成浏览器编码,就可以保证得到的参数编码正确。有些人可能会问,那如何得到浏览器编码呢?上面我们提过了,在默认请情况下,浏览器编码就是你在响应该请求的JSP页面response.setCharacterEncoding设置的值。所以对于POST表单提交的数据,在获得数据的JSP页面中request.setCharacterEncoding要和生成提交该表单的JSP页面的 response.setCharacterEncoding设置成相同的值。

一句话:统一使用编码过滤器即可解决所有的post请求的乱码问题!

Get:Tomcat5.0中,默认使用ISO-8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码。

解决get提交的乱码的方法如下:

A:对得到的数据重新进行编码转换,String  para = new String( request.getParameter("para").getBytes("iso8859-1"), "页面编码");

但是个人不推荐这个方法,一个设置太烦琐,二是不利于移植到其他服务器平台,如weblogic。

B:在Tomcat的配置文件server.xml的Connector标签中设置useBodyEncodingForURI或者
URIEncoding属性,其中useBodyEncodingForURI参数表示是否用request.setCharacterEncoding
参数对URL提交的数据和表单中GET方式提交的数据进行重新编码,在默认情况下,该参数为false(Tomcat4.0中该参数默认为true);URIEncoding参数指定对所有GET方式请求(包括URL提交的数据和表单中GET方式提交的数据)进行统一的重新编码(解码)。

综上所述:要彻底解决tomcat5.0以上的Post和Get 提交的乱码,只需要两个步骤即可:

一:配置统一编码过滤器,解决Post请求的乱码。

二:修改tomcat的server.xml配置文件,解决Get请求的乱码。
经过这样的步骤,乱码绝对会离你而去。

Weblogic服务器:

Post请求:在web.xml中配置统一编码过滤器即可!

Get请求:在大多数服务器上,不会出现乱码,有的服务器上需要在web.xml添加如下设置:

<context-param>    

     <param-name>weblogic.httpd.inputCharset./*</param-name>    

     <param-value>编码类别</param-value>    

</context-param> 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值