首页 > 编程语言 >关于java.net.URLEncoder.encode()将空格转成+问题

关于java.net.URLEncoder.encode()将空格转成+问题

时间:2024-03-14 10:56:25浏览次数:27  
标签:编码 URLEncoder 20 解码 空格 转成 encode java

1.情景展示

如上图所示,当我们使用jdk自带的类对数据进行URL编码时,空格会被转成+。

这其实是不对的,我们知道:

空格对应url编码是:%20,所以,jdk自带的URLEncoder将空格转成+是不对的。

如何解决?

2.解决方案

既然jdk自带的URLEncoder有问题,我们就有两种解决办法。

一种是仍然使用它,然后将编码结果中的+替换成:%20即可。

另一种就是使用第三方jar包中的工具类来完成编码。

我们这里只说第一种。

第一步:测试"+"能否正常编码。

我们可以看到:

+被编码成了:%2B,理应如此。

第二步:测试"+"和"%20"能否解码为空格。

我们可以看到:

"+"和"%20"都被解码成了空格。 

有了上两步的测试,我们知道将+替换成%20是可行的。

对编码结果调用如下方法,将编码结果中的"+"全部替换成"%20"。

String.replaceAll("\\+", "%20"));

3.javascript

URL编码encodeURI()

我们可以看到:

空格被编码成了%20,但是+并没有进行编码。

URL解码

%20被解码成了空格,+保持不变。 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

标签:编码,URLEncoder,20,解码,空格,转成,encode,java
From: https://www.cnblogs.com/Marydon20170307/p/18072349

相关文章

  • 风控规则引擎(一):Java 动态脚本
    风控规则引擎(一):Java动态脚本日常场景共享单车会根据微信分或者芝麻分来判断是否交押金汽车租赁公司也会根据微信分或者芝麻分来判断是否交押金在一些外卖APP都会提供根据你的信用等级来发放贷款产品金融APP中会根据很复杂规则来判断用户是否有借款资格,以及贷款金额。......
  • 阿里一面:Java中如何停止线程?
    引言在Java多线程编程中,正确且安全地停止线程是一项关键技能。简单粗暴地“杀死”线程不仅可能导致数据不一致性,还可能引发各种难以预测的错误。本文将探讨几种在Java中优雅地停止线程的方法,以确保程序的健壮性和可靠性。使用标志位(共享变量)停止线程一种常见的做法是使用一个bo......
  • 「Java开发指南」MyEclipse如何支持Spring Scaffolding?(五)
    在上文中(点击这里回顾>>)主要为大家介绍了SpringDSL模型等内容,本文将继续介绍菜单等。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:742336981欢迎一起进群讨论6.菜单本节主要描述与Spring支持的MyEclipse相关的各种菜单。6.1MyEclipse菜单当您右键单击Eclipse项目......
  • 面试了一个 5 年 Java 程序员,一个问题也不会。。
    大家好,我是R哥。周末愉快呀,最近我在做Java面试辅导,也模拟面试了好些个学员,说说其中一个学员吧,一个工作5年的Java程序员,模拟面试,居然一个问题也不会。。当晚模拟面试完,我的心情很复杂。我之前做系统架构师,同时也是面试官,这些年,少说也面试过几百上千人,不乏知识渊博、技能顶......
  • 【JavaScript】面试手撕柯里化函数
    ......
  • 图解Java并发编程第一章总结【精炼版】
    【第一章】图解Java并发编程Java线程的基本操作yield操作:yield操作,在基于时间片轮转的cpu调度算法中,用来放弃当前时间片sleep操作:sleep操作分为三种情况普通sleep:在指定时间内放弃cpu使用权,不释放同步锁sleep(0):作用与yield相同sleep被中断:抛出中断异常......
  • 基于SSM的协同过滤算法的电影推荐系统(有报告)。Javaee项目。ssm项目。
    演示视频:基于SSM的协同过滤算法的电影推荐系统(有报告)。Javaee项目。ssm项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringMvc+Mybatis+Vue+Layui+Elementui+Maven来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。报......
  • Java知识点之单例模式
    1、单例模式(BinarySearch)单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但......
  • java毕业设计小众咖啡店推荐平台的设计与实现(springboot+mysql+jdk1.8+meven)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景在当今社会,咖啡已经成为许多人日常生活中不可或缺的一部分。随着人们生活水平的提高和消费观念的转变,越来越多的人开始追求个性化和高品质的咖啡体验。小......
  • java毕业设计线上教学平台(springboot+mysql+jdk1.8+meven)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景随着互联网技术的迅猛发展,线上教育已经成为了现代教学体系中不可或缺的一部分。尤其是在全球性的公共卫生事件影响下,线上教学平台显示出了其独特的优势和......