jsp通过url向Action传参出现中文乱码(测试有效)

今天作项目的时候,向action传参时,总是无法解析中文字符,改了tomcat下的server.xml文件也无效,最后用了encodeURI函数,搞定。

jsp页面

jsp通过url向Action传参出现中文乱码

action

jsp通过url向Action传参出现中文乱码


========================================================================================================

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");

转码...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值