解决JDK URLEncoder.encode 编码空格变 + 号

这篇具有很好参考价值的文章主要介绍了解决JDK URLEncoder.encode 编码空格变 + 号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JDK URLEncoder.encode

jdk自带的URL编码工具类 URLEncoder, 在对字符串进行URI编码的时候,会把空格编码为 + 号。
空格的URI编码是:%20

解决方案:可以对编码后的字符串进行 + 替换成 %20,但这种解决方案并不优雅
另外字符串中的 + 会 encode 成 %2B
  • 使用jdk提供的 URLEncoder 工具类
/**
 * 使用 JDK 提供的 URLEncoder 工具类进行编码
 */
@Test
public void testJdkEncode() throws UnsupportedEncodingException {
	String val = "111 222+333  ";

	// 编码
	String encode = URLEncoder.encode(val, "utf-8");
	System.out.println("encode:" + encode);

	String rst = encode.replaceAll("\\+", "%20");
	System.out.println("rst:" + rst);
}

urlencoder.encode方法空格变成了加号,# 平常笔记,java

推荐使用

日常对于数据进行AES加密后进行base64的场景,可能会造成AES解密失败
  • 1.使用spring提供的 UriUtils 工具类
/**
 * 使用 Spring 提供的 UriUtils 工具类进行编码和解码
 */
@Test
public void testSrpingEncode() {
    String val = "111 222+333";

	// 编码
	String encode = UriUtils.encode(val, "utf-8");
	System.out.println("encode:" + encode);

	// 解码
	String decode = UriUtils.decode(encode, "utf-8");
	System.out.println("decode:" + decode);

	System.out.println(Objects.equals(val, decode));
}

urlencoder.encode方法空格变成了加号,# 平常笔记,java

  • 2.使用hutool提供的 URLUtil 工具类
/**
 * 使用 Hutool 提供的 UriUtils 工具类进行编码和解码
 */
@Test
public void testHutoolEncode() {
    String val = "111 222+333";

	// 编码
    String encode = URLUtil.encodeAll(val);
	System.out.println("encode:" + encode);

	// 解码
	String decode = URLUtil.decode(encode);
	System.out.println("decode:" + decode);

	System.out.println(Objects.equals(val, decode));
}

urlencoder.encode方法空格变成了加号,# 平常笔记,java文章来源地址https://www.toymoban.com/news/detail-763876.html

到了这里,关于解决JDK URLEncoder.encode 编码空格变 + 号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • transformer学习笔记:Positional Encoding(位置编码)

    对于任何一门语言,单词在句子中的位置以及排列顺序是非常重要的,它们不仅是一个句子的语法结构的组成部分,更是表达语义的重要概念。一个单词在句子的位置或排列顺序不同,可能整个句子的意思就发生了偏差。举个例子来说: I  do not  like the story of the movie, but I 

    2023年04月08日
    浏览(41)
  • Python encode()函数详解,Python编码解码

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 小白零基础《Python入门到精通》 encode() 可以对字符串进行 「编码」 ,常用来对 「中文」 字符串进行编码,以解决 「乱码」 问题。 语法 参数

    2024年02月13日
    浏览(25)
  • 自编码器(Auto-Encoder)

    自编码器算法属于自监督学习范畴,如果算法把x作为监督信号来学习,这里算法称为自监督学习(Self-supervised Learning) 在监督学习中神经网络的功能:。是输入的特征向量长度,是网络输出的向量长度。对于分类问题, 网络模型通过把长度为 输入特征向量𝒙变换到长度为 的

    2023年04月08日
    浏览(27)
  • 深入理解深度学习——Transformer:编码器(Encoder)部分

    分类目录:《深入理解深度学习》总目录 相关文章: ·注意力机制(AttentionMechanism):基础知识 ·注意力机制(AttentionMechanism):注意力汇聚与Nadaraya-Watson核回归 ·注意力机制(AttentionMechanism):注意力评分函数(AttentionScoringFunction) ·注意力机制(AttentionMechanism):Bahda

    2024年02月08日
    浏览(53)
  • 机器学习:自动编码器Auto-encoder

    不用标注数据就能学习的任务,比如Bert之类的。但最早的方法是Auto-encoder。 encoder输出的向量,被decoder还原的图片,让输出的图片与输入的图片越接近越好。 将原始的高维向量变成低维向量,将该新的特征用于下游任务。 相关的类似方法: PCA: youtu.be/iwh5o_M4BNU t-SNE: yout

    2024年02月14日
    浏览(39)
  • System.Text.Encoding不同字符编码之间进行转换

    System.Text.Encoding 是 C# 中用于处理字符编码和字符串与字节之间转换的类。它提供了各种静态方法和属性, 用于在不同字符编码之间进行转换 ,以及将字符串转换为字节数组或反之。 在处理多语言文本、文件、网络通信以及其他字符数据的场景中,使用 Encoding 类可以确保数

    2024年02月12日
    浏览(30)
  • 原生微信小程序/uniapp使用空格占位符无效解决方法

    最近碰到一个需求,在一个 text 文本中的前后添加 空格占位符 ,总所周知,我并不会前端,于是我查看了原生微信小程序以及uniapp官方文档,得到了以下答案: 原生微信小程序官方文档 uniapp官方文档 从文档可以知道我们可以用 nbsp; , ensp; , emsp; 等等作为占位符实现空格效果

    2024年02月03日
    浏览(62)
  • 概念解析 | 神经网络中的位置编码(Positional Encoding)

    注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:Positional Encoding A Gentle Introduction to Positional Encoding in Transformer Models, Part 1 在自然语言处理任务中,序列的顺序信息非常重要。例如,“小明去公园玩球”和“小明玩球去公园”

    2024年02月05日
    浏览(39)
  • 【Transformer系列(1)】encoder(编码器)和decoder(解码器)

    前言 这个专栏我们开始学习transformer,自推出以来transformer在深度学习中占有重要地位,不仅在NLP领域,在CV领域中也被广泛应用,尤其是2021年,transformer在CV领域可谓大杀四方。 在论文的学习之前,我们先来介绍一些专业术语。本篇就让我们先来认识一下encoder和decoder吧!

    2024年03月25日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包