struts2.1.8 action提交乱码解决办法

这个问题是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);

天苍苍,野茫茫,风吹草底见牛羊

你可能感兴趣的:(struts2.1.8 action提交乱码解决办法)