java上传附件含有%处理或url含有%(URLDecoder: Illegal hex characters in escape (%) pattern

在附件名称中含有%的时候,上传附件进行url编码解析的时候会出错,抛出异常:

Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "u9"  
    at java.net.URLDecoder.decode(URLDecoder.java:194)  
    at com.hbzx.controller.PayResultController.main(PayResultController.java:253) 

解决办法:可以替换含有%的字符为%25,代码如下:

1.JAVA版:

value = value.replaceAll("%(?![0-9a-fA-F]{2})", "%25");

讲解下%(?![0-9a-fA-F]{2}):

不匹配%后面两位为数字或字母(包括大小写)的字符;这样就把正确的排除了,其余的是要匹配替换的。

2.JS版:

由于js没有replaceAll方法,所以取个巧。

result.fileName.split('%').join(escape('%'))
随笔看心情
原文地址:https://www.cnblogs.com/stromgao/p/12033687.html