表单提交后action获取到的中文为乱码排查步骤

struts2表单提交后数据库存储中文乱码问题
原文地址: http://linux5.blog.51cto.com/1368878/1095592

表单提交后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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值