通过url传递参数报错:URLDecoder: Incomplete trailing escape (%) pattern

事情背景

在日上日志观察中,发现当用户搜索词包含特殊符号%的时候,应用报错,报错信息为 java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern

数据走向

前端界面(浏览器自动encode)--->网关(透传)--->tomcat(自动decode)--->控制器--->rpc层

线上真实情况

用户界面输入词浏览器请求tomcatrpc
壬二酸15%%22%E5%A3%AC%E4%BA%8C%E9%85%B815%25壬二酸15%手动decode,报错
%E5%A3%AC%E4%BA%8C%E9%85%B815%25%25E5%25A3%25AC%25E4%25BA%258C%25E9%2585%25B815%2525%E5%A3%AC%E4%BA%8C%E9%85%B815%25壬二酸15% 错误,跟用户输入的请求有差异

 

问题分析&解决方案

线上真实进行时进行了2次urldecode,导致当存在%特殊符号的时候报错。目前在rpc层进行的decode是没有必要的且错误的,直接删掉即可


示例:

import java.net.URLDecoder;

public class Test {

    public static void main(String[] args) {
        try {
            String  keyword = "壬二酸10%";
            String decode = URLDecoder.decode(keyword, "UTF-8");
            System.out.println("原字符串为:"+keyword);
            System.out.println("decode后字符串为:"+decode);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

错误信息:

java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern
    at java.net.URLDecoder.decode(URLDecoder.java:187)
    at Test.main(Test.java:8)

Process finished with exit code 0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值