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('%'))
随笔看心情