表单提交后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的编码格式:
4、action调用dao的方法,DAO方法内部在插入前获取到插入的信息,中文能正常先生,但插入后数据库显示乱码,抛开数据库格式不是UTF-8的可能,用工具插入中文数据正常,用Myeclipse插入数据库中文时,显示乱码:
原因是:数据库连接时与工具连接的编码不一样导致失败的,在连接数据库时添加编码格式为UTF-8:
jdbc:mysql://192.168.190.7:3306/struts2?useUnicode=true&characterEncoding=UTF-8
转载于:https://blog.51cto.com/linux5/1095592