在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>  采用了异步提交 。 求各位大侠知道下 到底哪里出错了 ,找了一下午额 还没有找到 纠结死了

解决方案 »

  1.   


    /**
     * 将页面传递的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;
    }

    }
    我是自己写了一个工具类,进行转化的。。楼主我也是研究了很久才这样做的。。现在把源码贴出来。