开发避坑指南(62):解决URLDecoder:Illegal hex characters in escape (%) pattern 异常

Illegal hex characters in escape (%) pattern URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "TR" 场景: 上传附件,对文件名称URL解码时,当文件名称包含特殊字符(‘+’、‘%’)会抛出异常:llegal hex characters in escape。 程序: 错误日志: --&... 阅读详情

异常信息

java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "食品"
	at java.net.URLDecoder.decode(URLDecoder.java:194)

异常分析

在对请求参数进行URLDecoder时发生上述异常。请求参数值为"85%食品级柠檬酸",请求参数包含百分号。该异常是由于URLDecoder在解码时遇到非法十六进制字符导致的,具体表现为字符串中的"%"被误认为是URL编码的起始符号,但后续字符"食品"不符合十六进制编码格式。URLDecoder要求%后必须跟随两个十六进制字符(0-9/a-f/A-F)才能正常解码。

解决办法

使用正则表达式预处理字符串,将“%”替换成 URL 编码中的百分号编码“%25”,替换后不需要跟两个十六进制字符,确保百分号正确传递。

String valueStr = value.replaceAll("%(?![0-9a-fA-F]{2})", "%25");

替换逻辑分解‌
(1)% 匹配‌

匹配字符串中的百分号字符,作为替换的基准点。

(2)(?![0-9a-fA-F]{2}) 负向先行断言‌

检查 % 后‌是否不跟随‌两位十六进制字符(0-9、a-f、A-F)。若不符合(如 %x、% 单独出现),则触发替换;若符合(如 %20),则保留原样。

(3)%25 替换值‌

将未编码的 % 替换为其URL编码形式 %25。

成功解决URLDecoder.decode报java.lang.IllegalArgumentException的错误 使用URLDecoder.decode对参数进行解码时,出现java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "","的异常,这是因为传参有一些特殊字符,比如%号或者说+号,导致不能解析。... 阅读详情

相关推荐

别急着做AI:FDE教你识别真需求,让AI真正落地

人工智能项目在落地过程中,经常出现业务方高喊“我们要做AI”,却说不清具体应用场景的现象。判断一个需求是否值得用AI实现,不能只看技术流行度,而要从问题出现频率、当前替代方案以及可量化业务价值三个维度展开验证。同时需要冷静比较规则引擎与大模型的边界:不是所有语义任务都要靠生成式模型,稳定、可解释且低成本的传统方案往往更具工程性价比。数据闭环也至关重要,缺乏历史样本与反馈回流路径的项目,很难在真实环境中持续优化。针对智能客服、合同审查或企业知识库等典型场景,可借助人机协同与最小代价的用户验证,逐步筛除伪需求,

weixin_42624889的博客 341

URLDecoder解码异常 URLDecoder: Illegal hex characters in escape (%) pattern - For input string: “xxx“

问题: URLDecoder.decode(title, "utf-8") 使用URLDecoder对标题进行解码报异常: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "xxx" 原因: 我们通过URLDecoder.decode方法源码可以看出,当编码字符串中含有%号和+号时,方法有特殊处理逻辑,导致%号会抛出异常,+号会

Darker的博客 1万+

小波变换(Wavelet Transform)原理及介绍

小波变换是一种多分辨率时频分析工具,克服了傅里叶变换无法定位时间信息的缺陷。通过可伸缩平移的母小波,它能同时捕捉信号的高频细节(短时特征)和低频轮廓(整体趋势)。其核心原理是利用不同尺度的小波基与信号进行内积运算,生成时频域系数矩阵。小波变换具有动态分辨率特性,高频部分时间精度高,低频部分频率分辨率好。主要应用包括瞬态事件检测、信号降噪、数据压缩(如JPEG2000)和压缩感知(如快速MRI)。

qq_42758052的博客 5482

URLDecoder: Illegal hex characters in escape (%) pattern - For input string

原文链接:https://blog.youkuaiyun.com/weixin_42054277/article/details/90285859。版权声明:本文为优快云博主「jarjune_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原因:后台发布文章的时候,内容里面有%,导致后台URLDecoder.decode()转码的时候报错。贴出部分代码,意思是取%后面的两位,从16进制转成10进制,要是转码错误就会报出这个异常。

男神的专栏 3421

使用Intel编译器编译OpenFOAM

本文总结了使用INTEL编译器编译OpenFOAM的过程

姜蜉蝣的博客 1546

simulink求解器选择的小tip

给出了simulink选择求解器的一种tip,与积分初值有关。

高能阿博特的博客 2054

URLDecoder解码报错

报错:URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "^Y" 原因:是因为URLDecoder解码中的源码里,如果编码字符串中含有%号和加号,就会自动抛出该异常 解决方法:先进行替换,然后再解码 pord = pord .replaceAll("%(?![0-9a-fA-F]{2})", "%25"); pord = pord .replaceAll("\\+", "%2B"); pord =.

我的博客 3631

similarity network fusion for aggregating data types on a genomic scale

基因组规模上的聚合数据类型的相似性网络融合 摘要:         近期的技术已经使收集不同类型的全基因组数据十分划算,结合这些数据去创建一个给定的疾病或生物过程的一个全面视图的计算方法是有必要的。相似网络融合(SNF:similarity network fusion)通过创建每一个可利用的数据类型的样本(如,患者)的网络可以解决这个问题。例如,创建一个给定一群患者疾病的全面视图,SNF计算

augustar学习笔记 7869

URLDecoder异常Illegal hex characters in escape (%)

URLDecoder对参数进行解码时候,代码如: URLDecoder.decode(param,"utf-8"); 有时候会出现类似如下的错误: URLDecoder异常Illegal hex characters in escape (%) 这是因为传参有一些特殊字符,比如%号或者说+号,导致不能解析,报错 解决方法是: public static String replacer...

weixin_30918633的博客 1011

微信小程序 - 实现Java微信支付退款功能以及退款流程,微信小程序前端+java后端完整示例源码,微信小程序退款功能详解,小程序订单申请退款和退款回调方法、查询退款等(新版微信支付,详细示例代码)

微信小程序开发-微信支付退款功能以及退款回调方法,微信支付退款API详解,微信小程序支付V3(支付、退款)Java实现微信小程序开发 小程序支付开发-小程序退款功能,微信小程序小程序和公众号 退款功能教程(含申请退款和退款回调,退款回调地址在商户后台配置或者代码自定义)最新版微信小程序支付,退款问题,小程序支付和退款功能详解,小程序申请退款,小程序处理退款,微信小程序支付与退款java,微信小程序退款及回调,JAVA实现微信小程序支付退款功能,退款api调用报错,如何解决退款申请无响应,如何用实现小程序订单

🏆 前端领域优质创作者 4159

YOLOv10改进,YOLOv10二次创新C2f结构采用WTConv卷积(感受野的小波卷积),ECCV 2024

WTConv 的核心思想是通过结合卷积神经网络(CNN)的强大特征提取能力与小波变换的多尺度特性,来实现大感受野的卷积操作,同时避免传统大卷积核带来的参数爆炸问题。传统的卷积操作通过滑动小窗口在图像上逐步执行局部特征提取,感受野的大小直接取决于卷积核的尺寸。随着卷积核的增大,参数量呈指数增长,导致网络训练效率降低、计算资源消耗增加。为解决这些问题,WTConv 提出了在小波域中执行卷积操作的策略。小波变换是一种常用于信号处理的技术,能够将信号分解为不同频率成分。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1022

URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "KV"

使用Morphia,连接mongo Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mongodb.MongoClient]: Factory method 'mongo' threw exception; nested exception is java.lan...

yangyangrenren的专栏 8069

修改 Alist 密码时报错?看看这个坑怎么解决!

启动服务后,再修改密码”。以后再遇到类似问题,先检查服务是否正常运行,说不定就能少踩不少坑。如果还有其他 Alist 的问题,欢迎在评论区留言交流~

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1154

mongoDB连接报错:Exception: URLDecoder: Illegal hex characters in escape (%) pattern - For input string:

Exception: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "nC" at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769) at org.springframework.beans.fac

qq_35840354的博客 944

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

W/System.err: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) p

在URL中是特殊字符,需要特殊转义一下。导致上述异常的主要原因是。

男神的专栏 1045

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern:%刷卡

在使用URLDecoder.decode方法进行解析的时候,解析时的字符串是“20%刷卡金”,出现了下面的问题:java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern:%刷卡我们进入decode方法查看源码,会发现对 % 和 + 这两个字符做了特殊处理。解决方法(参照A...

Signal_Du的博客 3115

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

URLDecode解码异常:java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%)

这里使用了一个特殊正则表达式:零宽负向先行断言(zero-widthnegative lookahead assertion),模式为(?pattern),代表字符串中的一个位置,紧接该位置之后的字符序列不能匹配pattern。这样就把正确的排除掉了,剩下的就是需要匹配替换的。我们进入decode方法查看源码,会发现对 % 和 + 这两个字符做了特殊处理。[0-9a-fA-F]{2})意思是'%'开始,不匹配。方法进行解析的时候,解析时的字符串是“①将%号替换为%25。②将+号替换为%2B。

男神的专栏 1336

URLDecoder: Illegal hex characters in escape (%) pattern - negative value

1、前提:使用URLDecoder.decode(“字符串”“utf-8”);进行解码出现上述问题2、原因:字符串的内容出现%后不是一个16进制的数(即从0——FF)3、解决方法:检查传入的字符看是否%后有不是16进制的数补充:(1)原码(2)16进制表...

qq_42444621的博客 2521

URLDecoder: Illegal hex characters in escape (%) pattern - For input string: “9k“

在调用http、https时会碰到关于URLDecoder异常的问题,关于URLDecoder异常解决方法,URLDecoder对参数进行解码时候添加如下代码。

scholar_06的博客 1087

JAVA -- URLDecoder: Illegal hex characters in escape (%) pattern - For input string: “%“

当加密参数有 % 或者 + 的时候 URLDecoder.decode() 方法会报错,想知道为啥可以去看方法的源码。判断一下,如果参数有% 或者 + ,就略过,或者替换后再解码。

DGH2430284817的博客 1051

java转换编码报错java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) patte...

Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "左右" at java.net.URLDecoder.decode %引起 %会转换成%25 ...

weixin_30819163的博客 775
上一篇: 开发避坑指南(61):Redis持久化失败:RDB快照因磁盘问题无法保存解决方案
下一篇: 开发避坑指南(63):解决SQL排序子句列名歧义异常:Column ‘xxx‘ is ambiguous
帧栈
博客等级 码龄2年 335粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帧栈

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值