ssh整合系列博客——(4)乱码问题解决

来源:互联网 发布:网络代售许可证 编辑:程序博客网 时间:2024/06/05 17:21

我相信,在ssh整合的时候,大多数程序员都会遇到一个蛋疼的问题——乱码,无论是在获取客户端提交的数据,在jsp间跳转或是在数据库存储查询时等等......,多多少少都会遇到乱码的问题,今天,就乱码的问题来总结一下常用的解决方案。

以前,在servlet + jsp + javabean的年代,人们大多数会自己写一个字符编码的Filter,用来过滤编码,使其所有的编码全部转换为自己定义的编码。

如今,在实际开发ssh项目时,有很少的人自己写字符编码的Filter,因为,spring自带了一个用于过滤编码的Filter,名字叫characterEncodingFilter,若想使用该Filter,只需要在web.xml中配置即可,配置如下:(此过滤器只适用于post,get方式不适用)

<span style="white-space:pre"></span><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!-- 阅读spring的characterEncodingFilter源码你会发现该类中有个encoding成员变量 --!><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value> <!-- 指定你自己想要设置的编码格式 --!></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern> <!-- 地址过滤,将所有的url都过滤到此Fliter --!></filter-mapping>

建议:在整个项目中,把所有的编码都统一设置为utf-8(页面编码,数据库编码,workspace编码等......)


这样配置之后,你就会发现大多数的乱码问题已经顺利的解决啦,读到这里,你会疑问,为什么是大多数的乱码解决了,那就是说还有其他的地方还可能存在乱码???

对,你的疑问没有错,post方式的乱码解决了,但是还有一种是get方式产生的乱码,比如:在jsp页面间传递参数等......

在jsp页面间最常用的传递参数的方法就是尾部传参,如:xxxjsp?username="张三"&&password="123"

那么,此种传递参数的方式为get,在获取尾部参数的jsp页面,你会发现获取到的username的值为乱码。

解决办法如下:

new String(request.getParameter("username").getBytes("iso8859-1"),"utf-8")
该语句的意思为:将获取的数据从iso8859-1编码转为utf-8编码。

总结:

1.post方式采用spring自带的字符编码Filter

2.jsp页面间的尾部传参是get方式,采用getBytes方法转换编码




0 0
原创粉丝点击