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

struts2表单提交后数据库存储中文乱码问题

2012-12-20 21:24 337 查看
表单提交后[/b]action[/b]获取到的中文为乱码排查步骤(提交的是[/b]action[/b]的属性):[/b][/b]
1[/b]、需要在[/b]struts.xml[/b]中做[/b]i18n[/b]配置[/b][/b]
<constant name="struts.i18n.encoding" value="utf-8" />[/b]
2[/b]、配置后[/b]action[/b]中打印是否能够获取到中文,如果获取不到中文,在[/b]action[/b]中进行转码,如下:[/b][/b]
String name = new String(project.getName().getBytes("ISO-8859-1"),"UTF-8");[/b]
或者写一个类定义转换字符编码的方法如下:[/b][/b]
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;
}
}[/b]
使用时:[/b][/b]
String [/b]转换后的字符串[/b] = [/b]类名[/b].conert([/b]要转换编码的字符串[/b]);[/b]
Action[/b]属性名[/b].set[/b]方法(转换后的字符串)[/b][/b]
Eg:[/b] String result = Chinese.convert(project.getName());
project.setName(result);
3[/b]、检查[/b]myeclipse[/b]的编码格式:[/b]




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




原因是:数据库连接时与工具连接的编码不一样导致失败的,[/b]在连接数据库时添加编码格式为UTF-8:[/b]
jdbc:mysql://192.168.190.7:3306/struts2[/b]?useUnicode=true&characterEncoding=UTF-8[/b][/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: