首页 > 编程语言 > 详细

Java URLEncoder 编码空格为“+”

时间:2019-10-09 16:22:57      阅读:132      评论:0      收藏:0      [点我收藏+]

使用 java.net.URLEncoder 编码下载文件名后会将空格替换为+,导致前端处理文件名时不能还原文件名的空格。

String s = "文件 -文件1";
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8);

结果为:%E6%96%87%E4%BB%B6+-%E6%96%87%E4%BB%B61,空格被替换为+,而不是%20,JS使用DecodeURIComponent得到 “文件+-文件1”。

查看源码可得 java.net.URLEncoder 实现的是 application/x-www-form-urlencoded https://www.w3.org/TR/html4/interact/forms.html#h-17.13.4

处理方式为:

  1. 使用String的replace
    URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20");

     

  2. 使用其他类库的方法,例如Spring的UriUtils
    UriUtils.encode(fileName, StandardCharsets.UTF_8.name());

     

参考:https://stackoverflow.com/questions/4737841/urlencoder-not-able-to-translate-space-character#

   https://www.zhihu.com/question/38753917

 

Java URLEncoder 编码空格为“+”

原文:https://www.cnblogs.com/mmdxg/p/11642483.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!