首页 > 其他分享 >url编码和解码分析URLEncoder.encode和URLDecoder.decode

url编码和解码分析URLEncoder.encode和URLDecoder.decode

时间:2024-04-21 09:45:36浏览次数:32  
标签:URLEncoder url System decode encode println out

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();
        }

    }
}

 

标签:URLEncoder,url,System,decode,encode,println,out
From: https://www.cnblogs.com/oktokeep/p/18148598

相关文章

  • 忘发通知邮件,微软默默地给 CURL 捐赠一万美元
    忘发通知邮件,微软默默地给CURL捐赠一万美元OSCHINA​已认证账号​关注 88人赞同了该文章出品|开源中国curl创始人DanielStenberg在博客中晒出了微软开源办公室FOSS基金发出的邮件,邮件中提及curl项目在微软员工的投票中胜出,因此每个......
  • httprunner 4.x学习 - 08base_url使用
    前言base_url是把所有接口的公共url提取出来,如我两个接口地址如下:imos登录接口:http://120.25.121.168:19001/api/login任务列表接口:http://120.25.121.168:19001/api/task这时,base_url:http://120.25.121.168:19001/api案例在.evn中设置环境变量base_url#.envbase_url=ht......
  • The request was rejected because the URL contained a potentially malicious Strin
    org.springframework.security.web.firewall.RequestRejectedException:TherequestwasrejectedbecausetheURLcontainedapotentiallymaliciousString"%2e"org.springframework.security.web.firewall.RequestRejectedException:Therequestwasrej......
  • Yii2-url路由配置
    Yii2-url路由配置没做任何处理的情况下,url地址如下http://www.yii2-basic.com/index.php?r=site/about去掉index.php和开启url美化/web/目录下添加.htaccess文件RewriteEngineon#如果是一个目录或者文件,就访问目录或文件RewriteCond%{REQUEST_FILENAME}!-d......
  • http请求头中application/x-www-form-urlencoded和multipart/form-data区别
    application/x-www-form-urlencoded和multipart/form-data是两种不同的Content-Type,它们在网络请求中(尤其是POST请求)用来指定表单数据的编码格式application/x-www-form-urlencoded:•这是最常见的表单数据编码方式,也是HTML表单的默认编码类型。•所有表单字段名和值都会......
  • simple_ffmpeg_decoder(ffmpeg的解码器)
    代码#include<stdio.h>#define__STDC_CONSTANT_MACROS//因为ffmpeg是C语言编写的所以要继承C语言的语法格式extern"C"{#include"libavcodec/avcodec.h"#include"libavformat/avformat.h"#include"libswscale/swscale.h"};intmain(i......
  • conda install sometools报错:CondaHTTPError: HTTP 000 CONNECTION FAILED for url <h
    把该错误投入chatgpt中会反映网络问题,重试几次但我重试了好几天也没安上,重新搜索该报错发现:ThatHTTPerrorhappenedwhenIupdatedthecondawith condaupdateconda.ItriedalloptionsdiscussedherebutitonlywassolvedwhenIdowngradedthecondaversion(I......
  • nacos启用鉴权后curl调用接口
    1.通过用户名密码获取token密码尽量不要带特殊字符,否则可能识别错误/#curl-XPOST'http://192.168.60.181:8848/nacos/v1/auth/login'-d'username=nacos&password=nacos'{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxMjkyNDc......
  • ImageDecoder 获取GIF动图帧数
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"content="w......
  • 随时评论的URL
    jdk镜像站:https://www.injdk.cn/旧版Maven下载:https://archive.apache.org/dist/maven/maven-3/软件源:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/国内镜像站:https://mirrors.163.com/jdk1.8:https://www.123pan.com/s/94VA-TGoVv.html支持jdk1.8的jenkins下载地址(Win......