表单提交后action获取到的中文为乱码排查步骤(提交的是action的属性):

1、需要在struts.xml中做i18n配置

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

2、配置后action中打印是否能够获取到中文,如果获取不到中文,在action中进行转码,如下:

String name = new String(project.getName().getBytes("ISO-8859-1"),"UTF-8");

或者写一个类定义转换字符编码的方法如下:

    public static String convert(String str){

       try {

           byte[] bytes = str.getBytes("ISO-8859-1");

           return new String(bytes,"UTF-8");

       } catch (UnsupportedEncodingException e) {

           e.printStackTrace();

           return str;

       }

    }

使用时:

String 转换后的字符串 = 类名.conert(要转换编码的字符串);

Action属性名.set方法(转换后的字符串)

Eg: String result = Chinese.convert(project.getName());

    project.setName(result);

3、检查myeclipse的编码格式:

4action调用dao的方法,DAO方法内部在插入前获取到插入的信息,中文能正常先生,但插入后数据库显示乱码,抛开数据库格式不是UTF-8的可能,用工具插入中文数据正常,用Myeclipse插入数据库中文时,显示乱码:

原因是:数据库连接时与工具连接的编码不一样导致失败的,在连接数据库时添加编码格式为UTF-8:

jdbc:mysql://192.168.190.7:3306/struts2?useUnicode=true&characterEncoding=UTF-8