From 11d6ad1ed3fbc1a2d856936aed33b89e42865540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=B2=BE=E5=8D=8E?= <842761733@qq.com> Date: Tue, 9 Jul 2019 10:01:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E4=BB=B6=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E6=B5=81URL=E5=8F=82=E6=95=B0=E4=B8=AD=E5=8C=85?= =?UTF-8?q?=E5=90=AB=E4=B8=AD=E6=96=87URL=E7=BC=96=E7=A0=81=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E5=AF=BC=E8=87=B4HTTP-400=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/keking/utils/DownloadUtils.java | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java b/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java index 1615fc30..8634ead9 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java @@ -123,30 +123,35 @@ public class DownloadUtils { * 对最有一个路径进行转码 * @param urlAddress * http://192.168.2.111:8013/demo/Handle中文.zip + * http://192.168.2.111:8013/download?id=1&filename=中文.zip * @return */ - private String encodeUrlParam(String urlAddress) { - String newUrl = ""; - try { - String path = ""; - String param = ""; - if (urlAddress.contains("?")) { - path = urlAddress.substring(0, urlAddress.indexOf("?")); - param = urlAddress.substring(urlAddress.indexOf("?")); - }else { - path = urlAddress; + + private String encodeUrlParam(String urlAddress){ + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < urlAddress.length(); i++) { + char c = urlAddress.charAt(i); + if (c >= 0 && c <= 255) { + sb.append(c); + } else { + byte[] b; + try { + //指定需要的编码类型 + b = String.valueOf(c).getBytes("utf-8"); + } catch (Exception ex) { + System.out.println(ex); + b = new byte[0]; + } + for (int j = 0; j < b.length; j++) { + int k = b[j]; + if (k < 0) { + k += 256; + } + sb.append("%" + Integer.toHexString(k).toUpperCase()); + } } - String lastPath = path.substring(path.lastIndexOf("/") + 1); - String leftPath = path.substring(0, path.lastIndexOf("/") + 1); - String encodeLastPath = URLEncoder.encode(lastPath, "UTF-8"); - newUrl += leftPath + encodeLastPath; - if (urlAddress.contains("?")) { - newUrl += param; - } - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); } - return newUrl; + return sb.toString(); }