今天作项目的时候,向action传参时,总是无法解析中文字符,改了tomcat下的server.xml文件也无效,最后用了encodeURI函数,搞定。
jsp页面
========================================================================================================
jsp: encodeURI(encodeURI(url));
action:java.net.URLDecoder.decode(request.getP..(),"UTF-8");
先在jsp编码,再在action中解码
encodeURI(encodeURI("中文"))编码
URLDecoder.decode(request.getParameter("参数名"),"UTF-8");完成解码。
例如: url:"qtypenums.action?typeid=<s:property value='typeid' escape='false'/>&qmobile=<s:property value='qmobile' escape='false'/>&qname="+encodeURI(encodeURI('<s:property value='qname' escape='false'/>'))+"&qattr1="+encodeURI(encodeURI('<s:property value='qattr1' escape='false'/>'))+"&qattr2="+encodeURI(encodeURI('<s:property value='qattr2' escape='false'/>'))+"&qattr3="+encodeURI(encodeURI('<s:property value='qattr3' escape='false'/>')),
在action中解码
String qname=this.getQname();
String qattr1=this.getQattr1()==null?"":this.getQattr1();
String qattr2=this.getQattr2()==null?"":this.getQattr2();
String qattr3=this.getQattr3()==null?"":this.getQattr3();
String qname1="";
String qattr11="";
String qattr21="";
String qattr31="";
try{
qname1=URLDecoder.decode(qname,"UTF-8");
qattr11=URLDecoder.decode(qattr1,"UTF-8");
qattr21=URLDecoder.decode(qattr2,"UTF-8");
qattr31=URLDecoder.decode(qattr3,"UTF-8");
}catch(Exception w){}
=================================================================================================
用过滤器。
package com.tarena.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharacterEncodingFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException{
}
}
建立一个类
------------------------------------------------fenge -------------------
再在web.xml加上这句话。
<filter>
<filter-name>characterEncoding</filter-name>
<filter-class>com.tarena.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
================================================================================
用过滤器。不屑与用就用 String s=new String(request.getP...(),getBytes("编码"),转换成什么编码如:UTF-8);
jsp: encodeURI(url);
action:java.net.URLDecoder.decode(request.getP..(),"UTF-8");
转码...