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

在附件名称中含有%的时候,上传附件进行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('%'))
posted @ 2019-12-13 10:21  二次元的程序猿  阅读(3181)  评论(0编辑  收藏  举报