Posted on 2010-04-15 10:33
asdtiang 阅读(958)
评论(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);
天苍苍,野茫茫,风吹草底见牛羊