url编码和解码分析URLEncoder.encode和URLDecoder.decode
url编码和解码分析
1.Get请求会将参数做默认的url解码操作,接口接收到的值是Get解码后的值。
2.可以将Get操作修改成Post操作,这样不会url解码。可以在接口中做url解码。
3.在多次传递参数的过程中,无需反复的编码(或者加了空格,加了换行),否则会将整个字符串错乱了。 (/ %2F %252F) (+ %2B %252B)
生产中可能遇到到场景:
1.支付宝支付时传值(自定义参数内容 passback_params 需要encode编码后传输,回调接口中收到后需要decode解码)
2.GET方法中传参有特殊字符等内容,需要编码后传值。
3.有些web容器会默认将参数编码后传值,收到参数后需要解码。
4.导出表格、文件等操作,拼装的文件名在报文头中需编码后传入,以免因为自定义的文件名中有特殊字符报错。
package com.example.core.mydemo.des; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Date; /**
* output:
* -------------特殊符号编码-------------
* + >>>%2B
* / >>>%2F
* 空格 >>>+
* 换行 >>>%0A
* = >>>%3D
* %2B >>>%252B
* %2F >>>%252F
* %252B >>>%25252B
* %252F >>>%25252F
* -------------特殊符号解码-------------
* + >>>
* / >>>/
* 空格 >>>
* 换行 >>>
*
* %3D >>>=
* %2B >>>+
* %2F >>>/
* %252B >>>%2B
* %252F >>>%2F
* 你好
* %E4%BD%A0%E5%A5%BD
*/
public class EncodeTest {
public static void main(String[] args) {
System.out.println("-------------特殊符号编码-------------");
System.out.println("+ >>>" + URLEncoder.encode("+"));
System.out.println("/ >>>" + URLEncoder.encode("/"));
System.out.println("空格 >>>" + URLEncoder.encode(" "));
System.out.println("换行 >>>" + URLEncoder.encode("\n"));
System.out.println("= >>>" + URLEncoder.encode("=")); System.out.println("%2B >>>" + URLEncoder.encode("%2B"));
System.out.println("%2F >>>" + URLEncoder.encode("%2F")); System.out.println("%252B >>>" + URLEncoder.encode("%252B"));
System.out.println("%252F >>>" + URLEncoder.encode("%252F")); System.out.println("-------------特殊符号解码-------------");
System.out.println("+ >>>" + URLDecoder.decode("+"));
System.out.println("/ >>>" + URLDecoder.decode("/"));
System.out.println("空格 >>>" + URLDecoder.decode(" "));
System.out.println("换行 >>>" + URLDecoder.decode("%0A"));
System.out.println("%3D >>>" + URLDecoder.decode("=")); System.out.println("%2B >>>" + URLDecoder.decode("%2B"));
System.out.println("%2F >>>" + URLDecoder.decode("%2F")); System.out.println("%252B >>>" + URLDecoder.decode("%252B"));
System.out.println("%252F >>>" + URLDecoder.decode("%252F")); try {
// 将application/x-www-from-urlencoded字符串转换成普通字符串
String keyWord = URLDecoder.decode("%E4%BD%A0%E5%A5%BD", "utf-8");
System.out.println(keyWord); //输出你好 // 将普通字符创转换成application/x-www-from-urlencoded字符串
String urlString = URLEncoder.encode("你好", "utf-8"); //输出%E4%BD%A0%E5%A5%BD
System.out.println(urlString); } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
url编码和解码分析URLEncoder.encode和URLDecoder.decode的更多相关文章
- URLEncoder.encode 和 URLDecoder.decode 处理url的特殊参数
在使用 url 的 queryString 传递参数时,因为参数的值,被DES加密了,而加密得到的是 Base64的编码字符串,类似于: za4T8MHB/6mhmYgXB7IntyyOUL7Cl++ ...
- java中的url 编码与解码
什么是application/x-www-form-urlencoded字符串? 答:它是一种编码类型.当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www ...
- Web开发须知:URL编码与解码
通常如果一样东西需要编码,说明这样东西并不适合传输.原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义. 例如,Url参数字符串中使用key ...
- LR URL编码和解码方法
问题:URL=http://www.baidu.com/s?wd=%E6%B5%B7%E6%B7%80%E9%BB%84%E5%BA%84"中要对%E6%B5%B7%E6%B7%80%E9% ...
- python接口自动化测试十三:url编码与解码
# url编码与解码 from urllib import parse url = 'http://zzk.cnblogs.com/s/blogpost?Keywords=中文' a = '中文' b ...
- Oracle url编码与解码
Oracle url编码与解码 CreateTime--2018年3月30日17:26:36 Author:Marydon 一.url编码 实现方式:utl_url.escape() 说明:utl ...
- python中的URL编码和解码
python中的URL编码和解码:test.py # 引入urllib的request模块 import urllib.request url = 'https://www.douban.com/j/ ...
- Delphi编码与签名【URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1、HMAC-SHA224、HMAC-SHA256、HMAC-SHA384和HMAC-SHA512签名】
作者QQ:(648437169) 点击下载➨delphi编码与签名 [Delphi编码与签名]URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1.HMAC-SHA224.HMAC ...
- URL编码和解码
1. 为什么需要编码 当数据不利于处理.存储的时候,就需要对它们进行编码.如对字符进行编码是因为自然语言中的字符不利于计算机处理和存储.对图片信息.视频信息.声音信息进行压缩.优化,将其“格式化”,是 ...
- Javascript中的url编码与解码(详解)
摘要 本文主要针对URI编解码的相关问题做了介绍,对url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript中和编解码相关的几对函数escape / unescap ...
随机推荐
- [Unreal] 虚拟现实理论与最佳实践
优秀的虚拟现实场景所需要具备的特点: 真实感.沉浸感.舒适性.流畅性. VR的这些特点上有其它媒体所不具备的优势,主要通过硬件来实现. VR 的沉浸感让用户置身于周围世界,也引发了一些独特的症状: 眼 ...
- [Linux] 日志管理: 日志轮替 logrotate
日志轮替包含了 "日志切割" 和 "删除旧的保留新的" 功能. 后缀 xx.1 xx.2 这种规则的一般出现的也比较多,目的系统是防止日志被覆盖. 查看详细配置 ...
- 应用zabbix的实时导出(real-time export)功能
说明 zabbix作为监控软件,有时也会需要获取历史数据作进一步的分析,通常可以采用3种办法: 通过zabbix API定期获取(通过web) 通过后端数据库定期读取(通过db) 应用实时导出功能配合 ...
- SpringMVC学习二(日期参数/数据保存/重定向)
接受的参数为日期类型 controller进行数据保存 Controller如何进行重定向跳转 1.对于前端页面传来日期类型的数据时如何进行处理,有两种方法 1.1在对应的Controller中插入代 ...
- chgrp chown
chgrp 用来改变文件所属群组,如果要改变的群组不在/etc/group里面,将会报错. chown 用来改变文件的所有者,如果改变的所有者便在/etc/passwd里面,将会报错. 需要注意的是c ...
- 5GC 关键技术之 MEC 边缘计算
目录 文章目录 目录 前文列表 MEC 边缘计算 ETSI MEC 标准化参考模型 MEC 架构设计原则 MEC 分层架构 MEC 系统架构 MEC 软件架构 MEC in NFV 融合架构 ETSI ...
- 【漏洞复现】用友NC uapjs RCE漏洞(CNVD-C-2023-76801)
产品介绍 用友NC是一款企业级ERP软件.作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计.采购管理.销售管理.物料管理.生产计划和人力资源管理等,帮助企业实现数字化转型和高效管 ...
- StackExchange.Redis跑起来,为什么这么溜?
StackExchange.Redis 是一个高性能的 Redis 客户端库,主要用于 .NET 环境下与 Redis 服务器进行通信,大名鼎鼎的stackoverflow 网站就使用它.它使用异步编 ...
- Java JVM——1.JVM与Java体系结构
前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? ✘ 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM! ✘ 想解决线上JVM GC问题,但却无从下手. ✘ 新项目上线,对各 ...
- Java自增
Java自增 本文分为以下部分: 栗子 栗子解释 来点复杂的 字节码解读 总结 栗子 java存在一种神奇的操作符,++,自增1,但是经常分不清楚 i++ 和++i 两者的区别,虽然最后结果可能都是 ...