URLEncode和URLDecode

article/2025/10/7 0:57:34

 

 

在提交表单时,浏览器会根据请求URL生成相应的请求报文给服务器。在这个过程中,浏览器会将请求地址转换为application/x-www-form-urlencoded MIME编码的字符串先,如下图中在这个编码规范中把utf-8的中文字符“陈”转换成“%E9%99%88”

 

application/x-www-form-urlencoded编码规范是:

1.字符‘a’-‘z’、‘A’-‘Z’、‘0’-‘9’不变

2.特殊字符‘.’、‘-’、‘*’、‘_’不变

3.空字符“ ”转成“+”

4.其他字符都视为不安全,都进行转换,每一个byte根据一些规则转换成%xy形式,其中‘xy’是两个16进制数字表示一个byte。

 

以上面例子来解释。“陈”的unicode码是0x9648,二进制表示就是1001 0110 0100 1000,在utf-8的编码方式中需要3个byte来表示:11101001      10011001     10001000。用十六进制表示这三个byte就是E9、99,88。

 

URLEncode,URLDecode就是实现这个规范的编解码类,在看URLEncode源码时卡了两下,一个是String.charAt(i)返回的“陈”的unicode码,不过想想也是char是两byte的,当然不可能返回三个byte的2进制(String内部就是维护一个char数组)。另一个是char Character.forDigit(int digit,int radix)方法,这个方法参数radix是一个>=2 && <=36的值,radix的表示进制,10就是十进制。digit是一个>0 && <radix的数字。这个方法的作用就是在指定进制下一个数字的表达形式,其中超过9的就用小写字母接上。比如Character.forDigit(11,16)就是返回字符‘b’。

还有就是URLEncode的研发这位Herb Jellinek写代码过程用System.out.println()测试可以理解,不过直接把打印代码直接注释就提交有点丑了吧


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

相关文章

编码URLEncoder和解码URLDecoder的UTF-8到GBK的转码

编码URLEncoder和解码URLDecoder的UTF-8到GBK的转码(java类中解码)&#xff1a; package com.kk;import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder;public class Charencoding {public static void main(String[] args)…

URLEncode编码和URLDecode解码

1 String text1 java.net.URLEncoder.encode("中国" ,"utf-8" ); 2 String text2 java.net.URLDecoder.decode(text1,"utf-8"); (1).URLEncoder 需要注意&#xff1a;这个方法编码了符号&#xff0c;“\” ,“&”,“”,和“&#xf…

在线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;不过也说明需…