美文网首页
日拱一卒:URL编码与解码

日拱一卒:URL编码与解码

作者: Tinyspot | 来源:发表于2023-02-03 16:15 被阅读0次

1. 字符集(Charset)

  • 字符集即字符的集合
  • 字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等
  • 分类
    • ASCII字符集
    • Unicode 字符集
    • GB2312字符集
    • ...

1.1 字符编码(Character Encoding)

  • 编码(Encoding),将数字映射到字符

1.2 转义符(escape character)

2. URL 编码与解码

  • URL 只能使用 ASCII 字符集
  • ASCII 集合之外的字符需要转换为有效的 ASCII 格式,格式为 % 加上两位十六进制字符,故URL编码通常也称为百分号编码
  • URL 不能包含空格,URL 编码通常使用 + 来替换空格

2.1 URL 编码

  • URL 编码参考手册
  • Url编码的原则就是使用安全的字符去表示那些不安全的字符,对于Url中的合法字符,编码和不编码是等价的

URL 使用 key=value 键值对来传参,键值对之间以 & 符号分隔
value 值包含 = 或 &,会造成接收Url的服务器解析错误,所以需要对字符进行转义,即编码

@Test
public void test() throws UnsupportedEncodingException {
    String url = "/files/loadFile.html?attachIndex=https://cdn.xxx.com/this$*()*#.txt&fileName=this$*()*#.txt";
    String fileName = url.split("&fileName=")[1];
    // 编码  /files/loadFile.html?attachIndex=https://cdn.xxx.com/this%24*%28%29*%23.txt&fileName=this%24*%28%29*%23.txt;
    String encodeUrl = url.replace(fileName, URLEncoder.encode(fileName, "UTF-8"));
    // 解码
    String decodeUrl = URLDecoder.decode(url, "UTF-8");
    System.out.println(encodeUrl + "; " + decodeUrl);
}

2.2 URL 解码

编码和解码的过程是可逆的

String name = "23432424";
String encodeStr = URLEncoder.encode(name, "utf-8");
String decode = URLDecoder.decode(encodeStr, "utf-8");

相关文章

网友评论

      本文标题:日拱一卒:URL编码与解码

      本文链接:https://www.haomeiwen.com/subject/kydnhdtx.html