URLEncode编码和URLDecode解码

article/2025/10/7 1:09:46
1 String  text1 = java.net.URLEncoder.encode("中国" ,"utf-8" );  
2 String  text2 = java.net.URLDecoder.decode(text1,"utf-8"); 

 

(1).URLEncoder

需要注意:这个方法编码了符号,“\” ,“&”,“=”,和“:”,并把空格(“ ”)转换成了(+)。它不会尝试着去规定在一个URL中这些字符怎样被使用。由此,你不得不分块编码你的URL,而不是把整个URL一次传给这个方法。

  例如,假设你想编码这个string:

  pg=q&kl=XX&stype=stext&q=+"Java+I/O"&search.x=38&search.y=3

  这段代码对其进行编码:  

1 String query = java.net.URLEncoder.encode( "pg=q&kl=XX&stype=stext&q=+"Java+I/O"&search.x=38&search.y=3");
2 
3 System.out.println(query);

  不幸的是,得到的输出是:

  pg%3Dq%26kl%3DXX%26stype%3Dstext%26q%3D%2B%22Java%2BI%2FO%22%26search.x%3D38%26search.y%3D3

  出现这个问题就是方法URLEncoder.encode( ) 在进行盲目地编码。它不能区分在URL或者查询string中被用到的特殊字符(像前面string中的“=”,和“&”)和确实需要被编码的字符。所以URL需要一次只编码一块。

 

  例如正确的拼接方法:

  

复制代码

 1 private static String _MakeURL(String p_url, Map<String, Object> params) throws UnsupportedEncodingException {2            StringBuilder url = new StringBuilder(p_url);3             // Strng.indexOf(substring) //搜索String中的substring,默认从0位开始;4  5             if(url.indexOf( "?")<0)6                 url.append( '?');7  8             for(String name : params.keySet()){9                 url.append( '&');
10                 url.append(name);
11                 url.append( '=');
12                  //url.append(String.valueOf(params.get(name)));
13                  //做URLEncoder处理
14                 url.append(URLEncoder. encode(String.valueOf (params.get(name)), "UTF-8"));
15            }
16  
17             return url.toString().replace( "?&", "?");
18      }

复制代码

 

(2).URLDecoder

  注意:由于这个方法没有触及到非转义字符,所以你可以把整个URL作为参数传给该方法<如下面的qerry>。不用像之前那样分块进行,依然可以得到你想要的正确的解码结果。例如:

  

复制代码

1   String input = "http://www.altavista.com/cgi-bin/"+"qerry?pg=q&kl=XX&stype=stext&q=%2B%22Java+I%2FO%22&search.x=38&search.y=3";    
2     try {    
3          String output = java.net.URLDecoder.decode(input, "UTF-8");    
4          System.out.println(output);   
5      }  

复制代码

为什么要使用URL编码 因为Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割

参考:https://www.cnblogs.com/jerrysion/p/5522673.html


http://chatgpt.dhexx.cn/article/P5oQ6Np3.shtml

相关文章

在线URLEncode/URLDecode网址

推荐个用起来比较好用的在线网站&#xff1a; Jsons.cn http://www.jsons.cn/urlencode/ 界面也比较清新

使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码

摘要&#xff1a; URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换。在本文中&#xff0c;我们以使用URLDecoder解决GET请求中文乱码问题为场景说明 URLDecoder/URLEncoder 的用法&#xff0c;并给出了 applicat…

URLEncode

目录 转换规则那哪些字符是需要转化的呢&#xff1f;和编码无关结论 参考 转换规则 urlencode&#xff1a;返回字符串&#xff0c;此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号&#xff08;%&#xff09;后跟两位十六进制数&#xff0c;空格则编码为加号&…

在线URLEncode编码,URLDecode解码工具

在线URLEncode编码&#xff0c;URLDecode解码工具 在线URLEncode编码&#xff0c;URLDecode解码工具 本工具支持对URL进行编码和解码&#xff0c;纯客户端计算&#xff0c;数据不会上传到服务器中&#xff0c;请放心使用。 https://tooltt.com/urlencode/

URL编码(encode)和URL解码(decode)

由于URL中支持的字符是有限的&#xff0c;所以一些特殊字符&#xff08;比如说&#xff1a;&、空格、加号等&#xff09;和中文需要经过URL编码。 URL编码的大体过程&#xff1a; 1、将字符经过一定的字符集&#xff08;通常是UTF-8&#xff09;编码 比如&#xff1a;&a…

URLDecoder和URLEncoder的使用总结

其实&#xff0c;这两个类的使用并不复杂&#xff0c;URLDecoder和URLEncoder它的作用主要是用于普通字符串和application/x-www-form-rulencoded MIME字符串之间的转换&#xff0c;一般的人会以为后一个字符串比较专业&#xff0c;以为有什么高深的知识&#xff0c;其实不然&a…

详解HTTP GET请求

实例1&#xff1a;NodeMcu通过TCP实现HTTP GET请求&#xff08;无请求主体&#xff09; srv net.createConnection(net.TCP, 0) srv:on("receive", function(sck, c) print(c) end) srv:connect(80,"fanyi.youdao.com") srv:on("connection", …

我是如何实现HttpGet请求传body参数的!

前言 最近调用公司项目一个接口时&#xff0c;发现该接口是一个Get请求&#xff0c;入参在Body 中&#xff08;json格式&#xff09;。场景如下&#xff1a;A服务需发送http请求调用B服务的接口&#xff08;该接口为Get方式&#xff0c;入参是一个json字符串在body中传递&…

使用CloseableHttpClient 模拟发送HttpGet和HttpPost请求

项目中经常会用到模拟Http请求&#xff0c;而jdk 下的 rt.jar核心库中也有 java.net提供了这方面的功能&#xff0c;但是总体而言&#xff0c;功能还是缺少灵活性和全面性&#xff0c;HttpClient的出现就是弥补了其缺失的功能。HttpClient不是浏览器客户端&#xff0c;而是一个…

python实现http get请求

接口请求方式为get请求&#xff0c;如下图抓包查看 Python实现脚本请求接口并以中文打印接口返回的数据 遇到问题没人解答&#xff1f;小编创建了一个Python学习交流QQ群&#xff1a;778463939 寻找有志同道合的小伙伴&#xff0c;互帮互助,群里还有不错的视频学习教程和PDF电…

我是如何实现HttpGet请求传body参数的?

点击关注公众号&#xff0c;利用碎片时间学习 前言 最近调用公司项目一个接口时&#xff0c;发现该接口是一个Get请求&#xff0c;入参在Body 中&#xff08;json格式&#xff09;。 场景如下&#xff1a;A服务需发送http请求调用B服务的接口&#xff08;该接口为Get方式&#…

HTTP get方式传json

文章目录 一、背景&#xff1f;二、尝试的过程1.postman(成功)2.hutool(失败)3.AsyncHttpClient(成功) 总结 一、背景&#xff1f; 最近项目中有个三方接口,需要使用get请求传递json, 这个让人有点懵,一般来说get参数都会直接拼接在url后, 复杂的参数都使用post方式传递, 尝试…

HTTP GET请求的最大长度?

HTTP GET请求的最大长度是多少&#xff1f; 是否定义了一个响应错误&#xff0c;如果服务器收到超过此长度的GET请求&#xff0c;服务器可以/应该返回该错误&#xff1f; 更新&#xff1a;如标记中所示&#xff0c;这是在Web服务API的上下文中&#xff0c;尽管也很有趣地看到了…

Arduino ESP32 获取网络数据(HTTP GET方式)

Arduino ESP32 获取网络数据(HTTP GET方式) 相关篇《Arduino ESP32 获取网络数据(HTTP POST方式)》《Arduino ESP32 获取网络数据(HTTP PATCH方式)》《Arduino ESP32 获取网络数据(HTTP PUT方式)》 本实例介绍&#xff0c;ESP32通过联网&#xff0c;访问指定服务器网站&#xf…

HTTP - get/post请求详解与本质区别总结

前言 在客户机和服务器之间进行请求、响应时&#xff0c;两种最常被用到的方法是&#xff1a;get和post。 get&#xff1a;从指定的资源请求数据&#xff08;从服务器获取数据&#xff09; post&#xff1a;向指定的资源提交要被处理的数据&#xff08;向服务器传送数据&#…

transferTo源码分析

transferTo源码分析 如图

netty(五) 【 transferTo 零拷贝实例】

前言&#xff1a; 在linux 中 transferTo 方法就可以完成传输&#xff0c;在 windows 中依次调用transferTo最多能传8M文件&#xff0c;需要分段传文件&#xff0c;而且要注意传输起点位置 模拟服务端实验源码&#xff1a; package com.dev.nio.TRANSFERTO;import java.io.IO…

MultipartFile的transferTo方法的坑

前言 最近用SpringBoot写文件上传功能&#xff0c;使用参数绑定之后确实是非常的方便了。但是&#xff0c;项目部署就出现了问题&#xff0c;搞得我一脸懵逼。后来&#xff0c;才发现是因为我使用了相对路径导致的&#xff0c;这个绝对是一个坑人的地方&#xff0c;不过也说明需…

通过零拷贝进行有效的数据传输(java、c)

目录 日期转移&#xff1a;传统方法 数据传输&#xff1a;零复制方法 构建文件服务器 性能比较 概要 相关阅读 许多Web应用程序提供大量的静态内容&#xff0c;这相当于从磁盘上读取数据并将完全相同的数据写回响应套接字。该活动似乎需要较少的CPU活动&#xff0c;但效率…

NIO中的零拷贝--transferTo

1、我们说零拷贝&#xff0c;是从操作系统的角度来说的。因为内核缓冲区之间&#xff0c;没有数据是 重复的&#xff08;只有 kernel buffer 有一份数据&#xff09;。 2、零拷贝不仅仅带来更少的数据复制&#xff0c;还能带来其他的性能优势&#xff0c;例如更少的上下 文切…