当前位置: 首页 > news >正文

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

异常信息

java.lang.IllegalArgumentExceptionURLDecoderIllegal 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。

http://www.dtcms.com/a/506989.html

相关文章:

  • DAX分列年月日
  • 【开题答辩实录分享】以《自然灾害隐患点管理信息系统》为例进行答辩实录分享
  • dpdk如何与内核进行交互——vdev的用法
  • 丝杆模组如何满足高精度加工设备的高要求?
  • 咋做网站泉州网络推广专员
  • 【STL——vector容器】
  • 如何做网站流量统计网站建设公司中企动力
  • 练习python题目小记(三)
  • 技术视角下的财务自动化:如何用最优TCO评估RPA机器人的性价比?
  • C++ 模板再升级:非类型参数、特化技巧(含全特化与偏特化)、分离编译破解
  • 京东客网站怎么做网站开发公司创业策划
  • 线性表实战:顺序表与链表的奥秘
  • 模块的波动对整个系统的影响
  • Linux服务器编程实践58-getnameinfo函数:通过socket地址获取主机名与服务名
  • Kubernetes(三) Pod 详解与 YAML 配置实战指南
  • 做网上购物网站网络培训seo
  • 电梯门禁系统及机器人乘梯功能的安装调试需要电梯公司技术人员全程配合,这主要由电梯设备的特殊性、安全规范要求及系统集成的复杂性决定。以下是具体原因及配合内容:
  • Windows安全基线、账户密码安全、账户锁定策略、审核策略
  • 介绍一下 辜朝明 的大衰退 理论
  • STM32G474单片机开发入门(二十)单片机IAP(在应用编程)详解及Ymodem实战
  • Flink中自定义序列化器
  • Linux 线程控制与同步互斥
  • 餐饮网站开发性能需求分析电商办属于哪个单位
  • 【Devops-Jenkins自动将Java Maven工程编译成jar、并打成Docker镜像,并上传Harbor】
  • 本地window10同步ubuntu上conda指定环境,并在C#项目中通过Python.NET调用自定义python接口
  • 蕲春网站建设一个网站怎么优化
  • 实战:Python爬虫如何模拟登录与维持会话状态
  • 【完整源码+数据集+部署教程】【天线&化学】航拍图屋顶异常检测系统源码&数据集全套:改进yolo11-ContextGuided
  • Blender霓虹灯牌发光标志店招门牌生成器插件 Procedural Signs V2.0.0+预设包
  • LeetCode——二分(初阶)