URLDecoder.decode(String s, String enc) 是在做什么?效果演示

背景:
在研究“开发API接口的安全验证:token,参数签名,时间戳”中的签名的过程中,涉及到了

字符编码:

URLEncoder.encode(SecurityUtil.EncryptByRSAPriKey(summary, SecurityUtil.getPrivateKey()), "utf-8");

说明:其中的summary 是相当于age=18&name=yushanma这种参数进行RSA或者MD5加密后并转换大写之后的一个加密的参数字符串;

字符解码:

URLDecoder.decode(sign, "utf-8")

说明:sign是进行加密后,在进行上面的encode编码的一个参数字符串。

解释:

URLDecoder.decode(String s, String enc) 是 Java 中的一个方法,用于将经过“URL
编码【URLDecoder.encode(String s, String enc) 】”的字符串 s
解码成原始字符串,同时指定了解码时使用的字符集编码方式
enc【一般指定成UTF-8】。在这个例子中,URLDecoder.decode(sign, “utf-8”) 的作用是将名为 sign
的字符串(假设它包含了经过 URL 编码的字符)按照 UTF-8 字符集进行解码,返回解码后的原始字符串。

URL 编码
URL 编码(也称为百分比编码)是一种用于在统一资源标识符(URI)中表示保留字符和非ASCII字符的机制。在 URL 中,一些字符是保留的,具有特殊的含义(如空格、?、=、& 等),这些字符不能直接用在 URL 中,而需要通过百分比符号(%)后跟两位十六进制数来编码。 此外,非ASCII字符(如中文字符)也需要进行编码,以确保它们可以在 URL 中安全传输。

java中URL 的编码和解码函数 :
java.net.URLEncoder.encode(String s)java.net.URLDecoder.decode(String s);
 
在javascript 中URL 的编码和解码函数 :
escape(String s)unescape(String s);
 
编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII16进制)码值。例如 空格的编码值是"%20"

解码效果
解码过程是将这些经过编码的字符转换回它们原始的、未编码的形式。例如:

如果 sign 是 %E4%BD%A0%E5%A5%BD,这是一个经过 URL 编码的字符串,代表中文字符“你好”。 使用
URLDecoder.decode(sign, “utf-8”) 进行解码后,会得到字符串 “你好”。

注意事项

  • 解码时指定的字符集(在这个例子中是 “utf-8”)必须与原始字符串编码时使用的字符集相匹配,否则可能会导致乱码。
  • 如果 sign 字符串中不包含任何需要解码的百分比编码字符,那么解码操作将简单地返回原始字符串。
  • URLDecoder 只会解码百分比编码的字符,而不会处理其他形式的编码(如 Base64 编码)。

示例

import java.io.UnsupportedEncodingException;  
import java.net.URLDecoder;  
  
public class URLDecoderExample {  
    public static void main(String[] args) {  
        try {  
            String encodedSign = "%E4%BD%A0%E5%A5%BD"; // 经过URL编码的“你好”  
            String decodedSign = URLDecoder.decode(encodedSign, "utf-8");  
            System.out.println(decodedSign); // 输出:你好  
        } catch (UnsupportedEncodingException e) {  
            e.printStackTrace();  
        }  
    }  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执键行天涯

码你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值