SSH框架中出现的中文乱码问题的解决办法

    应该经常遇到中文乱码问题吧,特别是刚上手的我,经常遇到各种中文乱码问题。之前使用一个Sturts2+Hibernate3的整合开发的时候,遇到了从页面录入中文到数据库就成了乱码的问题,但是数据库到页面的中文就正常。上网查了很多,各种处理的办法都有。

    遇到问题首先要找到出问题的地方,找到之后再想办法进行修改解决。

    既然数据库到页面没有问题,就说明数据库编码也正常,事实上在MySQL数据库show encoding的时候就是UTF-8。页面头字段也都是默然规定了UTF-8。既然问题不出在数据库和页面中,那就应该出在代码部分。

    System.out.println() debug了一下,发现从业务逻辑组件那边就是乱码了,导致再发送到数据库也只能是乱码了。

    网上有各种办法,但是发现对于Sturts2+Hibernate3架构的都没办法解决,最坑爹的就是

<constant name="struts.il8n.encoding" value="utf-8"></constant>

    因为这个就是个bug,在Stuts2-2.16中就是bug,根本没用,不过在Sturts2-2.18中已经修正了这个bug了。

    后来查到原因在于,Sturts2+Hibernate3架构的持久化层这里,这里已经固定了编码形式,所以不能修改编码。


    之后用了Struts2+Spring2+Hibernate3的架构模式,同样出现了问题,这里就容易解决多了,因为既然问题出在业务逻辑组件中,那就在业务逻辑组件实行之前加一个Filter。在web.xml中加入下面的Filter

 <filter>

     <filter-name>encodingFilter</filter-name>

     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

     <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>

    </filter-mapping>


调试后,中文乱码问题就解决了。

你可能感兴趣的:(异常处理,中文乱码,ssh)