在jsp页面使用了strut2 的s:optiontransferselect标签 提交两个list类型的数据,里面都是中文的,后台获取的数据却变成了这样的形式长期负债,不知道到底是哪里的问题 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; } }