URI编码乱码

HTTPS解密后为何出现“乱码”?详解URI编码与Punycode原理 在网络通信中,数据从应用层到传输层需要经过标准化编码处理以确保可靠传输。其核心原理在于HTTP协议对URI字符集的严格限制,以及DNS系统对ASCII字符的依赖。这导致了两种关键技术:百分比编码(URL Encoding)将非ASCII字符(如中文)转换为%xx格式;Punycode编码则将国际化域名(如中文域名)转换为xn--开头的ASCII字符串。这些编码机制对于保障Web安全、API接口调试及跨系统数据交换具有重要价值,尤其在HTTPS流量分析、安全测试和前后端联调场景中至关重要。例如,在Burp S 阅读详情

这次的需求是优惠券管理页支持多条件查询,之前一直都是单个条件查询。
做完后如果有多页,跳转指定页时如果当前搜索条件是包含中文的话会乱码,跳转后搜索不到内容
这里写图片描述

通过分析,发现跳转页面的链接是get方式,拼接如下:

#set($pageModule=$!homeModule.getTarget("/couponList.html").addQueryData("couponCode",$!query.couponCode).addQueryData("couponState",$!query.couponState).addQueryData("couponName",$!query.couponName)

而搜索框的方式是Post方式
get方式在传入后端的时候会进行uri编码,而post不会(如果错误,请留言,万分感谢)

第一种解决方案是:
在服务器进行一次解码:

if(StringUtils.isNotEmpty(couponName)){
couponName=URLDecoder.decode(couponName,"UTF-8");
query.setCouponName(couponName);
}

解码后进行数据的处理,在回传到前端时重新编码

if(StringUtils.isNotEmpty(query.getCouponName())){
Stringname=URLEncoder.encode(query.getCouponName(),"UTF-8");
query.setCouponName(name);
}

前端解码:

varcouponName=$("#couponName").val();
if(couponName!=null&&couponName!=""){
jQuery("#couponName").val(decodeURIComponent(couponName));
}

保证每次处理之前字符串都能恢复utf-8编码(即图中的无编码状态)

注意,这种方案不支持字符串中带有特殊字符,如%
原因:
在使用post到服务器后台解码时,URLDecoder.decode不支持特殊字符的解码,会直接报错。

方案改进:
搜索条件post之前先将字符串编码一次,如%编码成%25,后台便可以正常解码成%

方案再改进:
为了编码一致,我们最好让搜索条件和页面跳转(比如第n页,首页,尾页)的方式一致,如都使用post或者get
于是最后改进让搜索条件的时候也使用get
这样只要让字符串get之前encode两次
这里写图片描述

codeURL编码解码工具 codeURL编码解码工具,将不同编码进行URL编码,同时还可将URL编码进行解码!!! 立即下载

相关推荐

2024年全国大学生信息安全竞赛安徽省赛网络系统建设与运维赛项-网络构建真题

该网络工程方案主要包含基础配置、有线网络、无线网络、出口网络、运维配置和SDN网络六个部分。基础配置包括设备接口设置、SSH服务开启和SNMP功能配置。有线网络部分重点部署VLAN、MSTP、VRRP和OSPF协议,实现网络冗余和负载均衡。无线网络规划了AP点位、信号覆盖和用户接入策略,包括SSID配置、频段优化和安全认证。出口网络配置了NAT转换、VPN隧道和流量审计功能。运维方面搭建了监控平台实时监测设备状态。SDN网络部分通过控制器实现流量管控。整个方案实现了多业务隔离、高可用性网络架构和

weixin_42221934的博客 1175

解决URI中文乱码问题

困扰了许久的uri中有中文会出现乱码,然后不能访问的问题,网上查找了许久后,发现对uri进行编码的时候,规定一种编码模式:String uri = URLEncoder.encode(uri,"UTF-8");,解码的时候用URIDecoder进行解析,String uri = URLdecoder.decode(uri,"UTF-8");问题就就解决了!      测试代码:

qinshang007的专栏 2975

Unity Shader Graph 2D - Procedural程序化图形转动的环状六边形

Hexagon又称六边形,在游戏中是十分常见的基础形状,本文将使用程序化的六边形来制作多个环状六边形叠加的转动动画效果,实践Unity Shader Graph中的常用节点功能。

Giver的博客 1930

URL中文参数乱码问题(针对IE6.0)

我们经常使用如下方式进行参数传递,如:url参数传递  而后台仅有如下代码:String action = request.getParameter("action");  那么获取的可能是乱码,普通的解决方法有: 1. request.setCharacterEncoding("UTF-8"); String action=new String(reque

Arthur0088的专栏 5242

AutoDL跑yolo

由于博主在AutoDL的JupyterLab的终端直接上传ZIp文件要么老是再上传中被中断,要么就是上传后使用unzip指令解压显示“找不到”,作为纯小白的我实在太难了!这个文件列出了一个 Python 项目所需的所有依赖包及其精确的版本号。这个文件是 Python 项目中常见的一种方式,用于确保项目在不同环境中都能以相同的依赖包配置运行。3.进入JupyterLab,在文件夹目录中找到上传的文件夹,右键点击“复制路径”。然后在终端中输入以下指令进行切换到该文件夹路径。9.安装成功后开始输入指令开跑!

m0_73804659的博客 1206

SAP PP模块 MRP配置实战:5步完成工厂级物料需求计划激活

本文详细介绍了SAP PP模块中物料需求计划(MRP)的工厂级配置实战,通过5个关键步骤从基础环境准备到最终激活。内容涵盖SPRO后台配置、MRP控制者定义、主数据设置及核心参数调整,帮助顾问快速掌握MRP配置清单的完整流程,确保物料需求计划的高效运行。

weixin_30431445的博客 344

解决url中文乱码问题

修改tomcat/conf/server.xml目录下Connector节点,添加 URIEncoding="UTF-8" useBodyEncodingForURI="true": 转载于:https://www.cnblogs.com/sflik/p/5067934.html

aidupo6157的博客 132

模型瘦身术:YOLOv5无损剪枝实战教程

本文介绍了一种YOLOv5模型的无损剪枝方法,通过"稀疏训练+结构化剪枝+微调"的流程,在不损失精度的前提下显著减小模型尺寸并提升推理速度。具体步骤包括:1)稀疏训练给参数排优先级;2)裁剪不重要通道;3)微调恢复精度;4)验证效果。实战部分详细展示了从环境搭建到剪枝实现的完整流程,并分析了剪枝后在边缘设备部署、实时检测等场景的优势。该方法可使YOLOv5s模型从14MB缩减至2-3MB,推理速度提升30%-50%,适用于资源受限设备的轻量化部署需求。

LXY_LOVE36的博客 105

URL添加中文参数乱码解决办法

当在地址栏中传递参数的时候,服务器端获取的参数值为乱码解决方案:1、使用JS将中文转为ASCII码var param = encodeURI("中文参数");   备注:encodeURI该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,# alert(encodeURI(

黄彪博客 1767

Linux iperf 进行跑流测试时,为啥单条流会有速率上不去的问题?

iperf

1042484520@qq.com(邮箱) 3088

SAP成本核算的核心逻辑

SAP成本核算采用"计划-归集-分析"闭环管理,以CO模块为核心,集成PP、MM等模块。核算前需配置标准成本控制范围、成本中心等主数据。标准成本通过BOM和工艺路线计算(CK11N),采购和生产过程记录实际成本差异。制造费用通过成本中心归集,作业成本按实际耗用量分配。完工产品按标准成本入库,月末通过KO88结算工单差异,物料分类账(CKMLCP)还原实际成本。整个流程实现FI与CO数据同步,确保账务一致。关键事务码包括CK11N(成本估算)、MIGO(物料移动)、CO11N(报工)等。

金牌架构师 540

URL转码方法及不能被转码的特殊字符(java)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34378045的博客 3万+

35、使用 Geo 创建 GitLab 的分布式只读副本

本文详细介绍了如何使用GitLab Geo功能创建分布式只读副本,涵盖数据库主从配置、SSH密钥查找方式更改、通过Web UI添加从节点、激活哈希存储及状态检查等关键步骤。同时提供了常见问题解答和配置流程图,帮助用户快速部署并维护Geo集群,实现跨地域的高效数据同步与高可用架构。

chair的专栏 81

日志:中文 URI 参数乱码之 encodeURI、encodeURIComponent、escape 作为 Ajax 中文参数编码给 ASP 的记录

对于 ASP 来说,最适配的 URI 中文参数传递转换应该还是推荐 Unicode 编码,不和浏览器默认转换 UTF-8 扯皮,扯不清楚,于是自己写了个简单的 VBS 版 unescape

业余编程 730

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

URI经过GB2312编码后导致中文乱码

场景: 描述: 客户端默认编码为GB2312,服务端默认编码方式为UTF-8。客户端请求服务端,参数有中文。在实际请求过程中,客户端将中文“你好”编码为“%C4%E3%BA%C3”,服务端接收到会按照UTF-8格式进行解码,导致解码失败,得到的中文为一堆乱码。 原因分析:客户端和服务端两者编码方式不一致。 解决方法: 1、客户端、服务端两者统一的编码,如UTF-8。如何在tomcat、jetty...

rt12345678910的博客 2516

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

dokuwiki win7环境 新建页面本地文件名 乱码 URI编码 转中文 解决方案

dokuwidi版本号:$updateVersion = "49.5"; 来自 doku.php [不保证其他版本的也使用同样方法解决,但大体思路应该相同] dokuwiki.php 中配置$conf['fnencode'] = 'gb2312'; pageutils.php 中修改两个函数(蓝色为添加的部分): function utf8_encodeFN($file,...

wuyuetc的专栏 1056

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

dojo+JBoss7设置URI编码为UTF-8,解决传参中文乱码问题

1-- 在根目录下找到standalone\configuration\standalone.xml,该配置文件是JBOSS所有配置的综合,与7.X之前有所区别。 2-- 把如下的配置                                  放到和标签中间。 3-- 重启JBOSS服务器   (注:7.X一下版本在service.xml文

earthhour的专栏 2751

URL(URI) 中的字符集编码与乱码(上)--路径(path)中的字符集编码

深入介绍了 URL 中的转义编码, 用具体例子讲解了中文 URL 中的转义情况, 以及 tomcat Connector 中的 URIEncoding 设置.

Just do IT 2026

js 乱码 反斜杠_js 转义字符及URI编码详解

URL中的转义字符当URL的参数中出现诸如+,空格,/,?,%,#,&,=等特殊字符串符号时,因为上述字符有特殊含义,导致服务器端无法正确解析参数,如何处理?解决办法:将这些字符转化成服务器可以识别的字符。如果要在URL中传递特殊符号的原本意义,要对他们进行编码。编码的格式为:%加字符的ASCII码(16进制),例如空格的编码值是"%20"。URL中特殊符号的用途及普通意义的编码+URL ...

weixin_39531761的博客 2251

encodeURI() 对 URI 进行编码,解决GET方式请求中文乱码

一、客户端页面需要进行双重编码: 格式:encodeURI() 对 URI 进行编码 encodeURI(encodeURI(目标值)) 二、服务端进行解码 request.setCharacterEncoding("UTF-8"); URLDecoder.decode(目标值,"UTF-8"); response.setCharacterEncoding("UTF-8"...

十年回首,一纸感动! 1477

将字符串作为URI组件进行编码(encodeURIComponent())与解码(decodeURIComponent())

encodeURIComponent()函数 可以把字符串作为URI组件进行编码 此函数对特殊字符进行编码。此外,它还对以下字符进行编码: , / ? : @ & = + $ # 以下举例说明 var uri = "https://w3school.com.cn/my test.asp?name=ståle&car=saab"; var res = encodeURIComponent(uri); console.log(res) //结果为https%3A%2F...

qq_52065282的博客 2096

php tomcat get编码格式,服务器_tomcat下post方式提交服务器乱码,/*分析:当调用request.getParameter - phpStudy...

/*分析:当调用request.getParameter()函数时,会自动进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI 编码两次后,request.getParameter()函数得到的是原信息URI编码一次的内容。再用可控的解码函数 java.net.URLDecoder.decode()就可解出原始的正确的信息。*/var params = encodeURI(enc...

weixin_39609770的博客 107

Tomcat 接受URI的中文参数

Tomcat 默认是用 ISO-8859-1 处理URI中的参数 所以,如果URI参数中含UTF-8编码的话,如果直接读取会出现乱码。 两个解决办法 : 1. 改配置,在tomcat的server.xml 的connector中加入URIEncoding="UTF-8"   <Connector port="8080" protocol="HTTP/1.1" ...

iteye_11287的博客 263

Java笔记——GET请求乱码问题

GET方式提交时,会对数据进行URL编码处理,是将GBK 转码为 “百分号码”,我们把这串数字看成1010即可,只不过浏览器在解析这个1010的时候,为了区分字节,夹杂了一些%处理,每一个%代表一个字节的开始,%后面的其实是用的十六方式表示的一个字节。改为GBK后,不仅浏览器解析的时候字符集变为GBK了,同时这个html文件也会默认改为GBK编码,并且还影响了这个Form表单提交的时候用什么字符集对这些参数进行编码。默认使用UTF-8对URI进行解析,造成前后端使用的字符集不一致,出现乱码。

a25847a的博客 341

jsp 读取地址栏参数------uri编码和解码

/*分析:当调用request.getParameter()函数时,会自动进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI 编码两次后,request.getParameter()函数得到的是原信息URI编码一次的内容。再用可控的解码函数 java.net.URLDecoder.decode()就可解出原始的正确的信息。*/jsp 读取地址栏参数var param

自由空间 4563

【JavaWeb】GET请求乱码问题

GET方式提交时,会对数据进行URL编码处理,是将GBK 转码为 “百分号码”,我们把这串数字看成1010即可,只不过浏览器在解析这个1010的时候,为了区分字节,夹杂了一些%处理,每一个%代表一个字节的开始,%后面的其实是用的十六方式表示的一个字节。改为GBK后,不仅浏览器解析的时候字符集变为GBK了,同时这个html文件也会默认改为GBK编码,并且还影响了这个Form表单提交的时候用什么字符集对这些参数进行编码。默认使用UTF-8对URI进行解析,造成前后端使用的字符集不一致,出现乱码。

qq_39921135的博客 838
上一篇: jar包升级版本号引发的问题
下一篇: URI编码
HY_Chan
博客等级 码龄10年 54粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值