您的位置:首页 > 编程语言 > Java开发

Struts2提交表单中文乱码问题解决

2014-04-15 19:21 387 查看
依据下面方法一一检查

1、将MySQL的默认编码设置为utf8,我是用“MySQL Server Instance Config Wizard”直接弄的,据说my.ini文件也可以设置,我没有试过。
   关于查看MySQL编码可以用这个命令:show Variables like '%set%'

  还有提下,我创建数据库的代码设置默认为utf8编码格式,只是起先没用“MySQL Server
Instance Config Wizard”修改整个MySQL默认配置的时候,还是出现乱码

2、将所有的jsp页面都设置成:

<%@ page contentType="text/html;charset=UTF-8"%>

<%@ page pageEncoding="UTF-8"%>

3、数据库的默认编码设置为utf8,我是在创建数据库的SQL代码中设置的。(

4、在web.xml中加一个过滤器,应该是个编码过滤器:

    <!-- 中文编码filter -->

    <filter>

        <filter-name>struts-cleanup</filter-name>

        <filter-class>

           org.apache.struts2.dispatcher.ActionContextCleanUp

        </filter-class>

    </filter>  

    <filter-mapping>

        <filter-name>struts-cleanup</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

   这个过滤器要放前面,据说是过滤器的顺序问题也会影响到乱码的(好像是第一次会出现乱码)

5、接下来就是配置struts2的常量了,配置这个常量struts.i18n.encoding
   一种在struts.xml文件中配置,用<constant name="struts.i18n.encoding" value="utf-8"/>
   一种在struts.properties中配置,我的struts.properties是这样子的:
   struts.custom.i18n.resources=messageResource
   struts.locale=zh_CN
   struts.i18n.encoding=UTF-8

6、好像对于MySQL版本比较低(似乎是3.1一下的,忘记了)的数据库,还要加一条:
   在连接数据库url改为:
   url = "jdbc:mysql://localhost:3306/数据库名?useunicode=true&characterEncoding=utf8"
   即加入“?useunicode=true&characterEncoding=utf8”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  中文乱码