您的位置:首页 > 其它

ssh2整合时乱码问题

2013-05-12 12:52 281 查看

   ssh2整合时遇到的乱码问题

    最近在整合SSH2时遇到了乱码问题,我使用的是struts.2-3-12, hiberntae-3.3, spring3.0,提交英文是没有问题的,但是提交中文时,会出现???? 而且在mysql中也是乱码。由于我全部统一为utf-8,数据库也是,当然 也可以全部设为GBK。花了一个早上终于解决了,现在写一些上网搜到的解决方法,出现乱码的原因也就是页面乱码、action乱码,还是数据库乱码,这个三方面。所以解决问题时,可以单方面一个个的测,分层思想来分析问题。

    页面乱码

   1.可以右键打开项目,点击properties,然后查看Text file encoding的两个选择,默认是为GBK。这里我选择了UTF-8

   如图:


  这里也有可能出现问题,所以大家可以看看~

  2.然后就是JSP页面的编码要设置成UTF-8

  3.在Tomcat中找到server.xml文件,并且修改成

  action乱码

  1.可以在struts.xml中添加  <constant name="struts.i18n.encoding" value="UTF-8"></constant>

  2.还可以struts2-core-2.3.12.jar包中的org.apache.struts2中找到default.properties查看struts.i18n.encoding=UTF-8是否统一,默认为UTF-8。

  3.还可以交给spring过滤器来管理,在web.xml中配置为

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>

   就是添加URIEncoding="UTF-8",我就是问题,不要写成URL,而是URI。 URI:Web上可用的每种资源 -HTML文档、图像视频片段、程序
- 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
   <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>

 这个配置一定要在struts2的拦截器之前配,不然会失效
  4.最后如果还是不行,可以自己写个过滤器,提前接收request请求,对字符进行处理,这里不展开详解了。

  数据库乱码

  这里我使用的是mysql,由于dos的mysql管理,是不支持UTF-8,要想在cmd下显示中文,必须设置成GBK,或者使用其它的连接软件来管理mysql,比如Toad for mysql,MySQL Query Browser等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  乱码 SSH2 UTF-8