前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >url编码和解码分析URLEncoder.encode和URLDecoder.decode

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

作者头像
oktokeep
发布2024-10-09 11:17:14
发布2024-10-09 11:17:14
17700
代码可运行
举报
文章被收录于专栏:第三方工具第三方工具
运行总次数:0
代码可运行

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.导出表格、文件等操作,拼装的文件名在报文头中需编码后传入,以免因为自定义的文件名中有特殊字符报错。

代码语言:javascript
代码运行次数:0
复制
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();
        }

    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档