Posted on 2010-04-15 10:33 
asdtiang 阅读(984) 
评论(0)  编辑  收藏  所属分类: 
java ee 
			 
			
		 
		这个问题是2.1.6里的BUG,在2.1.8的时候解决了,文本框里的中文能正常提交:不过url中的param提交的是UTF-8编码,中文是UTF-8编码,英文还是英文。
<s:url id="del" value="editView.action">
      <s:param name="name">
       <s:property value="name" />        ///这里会提交UTF-8编码
      </s:param>
 </s:url>
记得以前好像写过,不过不知道放哪里,今天用struts2.1.8+spring+hibernate做开发时,又遇到这个问题,写出来吧,下次好找:
页面编码设置成UTF-8,如何提交的中文为”青云山“,提交到action里变成了:

   38738其实就是UTF-8编码,自己写了一个类进行转化一个就行了。
public class MyConverter {
    private static MyConverter myConverter;
    private StringBuffer str;
    private char[] ch;
    private MyConverter() {
    }
    public static MyConverter getMyConverter() {
        if (myConverter == null) {
            myConverter = new MyConverter();
        }
        return myConverter;
    }
    public String converter(String str3) {
        if(str3==null){
            return "";
        }
        str=new StringBuffer();
        str.append("");
        ch=str3.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            
            if(ch[i]=='&'){
                if(ch[i+1]=='#')
                {                
                    str.append(Character.toChars(Integer.parseInt(new String(ch,i+2,5))));
                    i+=7;
                }
                else{
                    str.append(ch[i]);
                }
            }
            else{
                str.append(ch[i]);
            }    
        }
        return str.toString();
    }
}
使用时,在action中,可能有中文提交的地方转化一下就行了。
 MyConverter my = MyConverter.getMyConverter(); 
this.userName = my.converter(this.userName); 
天苍苍,野茫茫,风吹草底见牛羊