当前位置: 代码迷 >> J2EE >> 又是恶心的乱码有关问题 jsp页面中文提交后后台变成了 &38271;&26399;&36127;&20538;&21512;&35745; 求指导呀
  详细解决方案

又是恶心的乱码有关问题 jsp页面中文提交后后台变成了 &38271;&26399;&36127;&20538;&21512;&35745; 求指导呀

热度:66   发布时间:2016-04-22 01:08:31.0
又是恶心的乱码问题 jsp页面中文提交后后台变成了 长期负债合计 求指导呀
在jsp页面使用了strut2 的s:optiontransferselect标签 提交两个list类型的数据,里面都是中文的,后台获取的数据却变成了这样的形式&#38271;&#26399;&#36127;&#20538,不知道到底是哪里的问题 jsp页面的编码方式是gbk,strut2.xml也配置了编码方式为gbk。数据提交的方式是<ss:submit value="筛选" formId="selectCom" href="%{divSelectCom}" targets="result" onclick="selectCompany()"></ss:submit> 采用了异步提交 。 求各位大侠知道下 到底哪里出错了 ,找了一下午额 还没有找到 纠结死了。。。

------解决方案--------------------
Java code
/** * 将页面传递的Unicode字符编码转换成相应的汉字 * */public class GetStringByString  {    private String string;    public GetStringByString(String string){        this.string=string;    }    public String getUnicodeString(){                if(!isIllegal(this.string)){            return this.string;        }                        String[] s=this.string.split(";");                StringBuffer sb=new StringBuffer();                        for(int i=0;i<s.length;i++){            if(isHave(s[i])){                String s1=s[i].substring(0, s[i].indexOf("&"));                sb.append(s1);                String s2=s[i].substring(s[i].indexOf("#")+1);                sb.append((char)Integer.parseInt(s2));            }            else{                sb.append(s[i]);            }        }        return sb.toString();    }    //判断是否存在&#    private boolean isHave(String s){                for(int i=0;i<s.length();i++){            if(s.charAt(i)=='&'&&s.charAt(i+1)=='#'){                return true;            }        }        return false;    }    //判断是否存在;    private boolean isIllegal(String s){        for(int i=0;i<s.length();i++){            if(s.charAt(i)==';'&&s.charAt(i-6)=='#'&&s.charAt(i-7)=='&'){                return true;            }        }        return false;    }    }