URL编码和base64

一、URL编码

URL编码是一种将URL中的非ASCII字符或特殊符号转换为 %XX 格式的技术(XX为十六进制值)。其核心规则包括:

  • 空格可转为 +%20
  • 特殊字符(如 ?, #, & 等)需转为 % + 十六进制ASCII码;
  • 仅允许保留字符(如字母、数字、-, _, ., ~)不编码。

示例
http://example.com/你好?name=张三http://example.com/%E4%BD%A0%E5%A5%BD?name=%E5%BC%A0%E4%B8%89

应用场景
URL参数、表单提交、路径中的特殊字符处理。

二、Base64

Base64是一种将二进制数据转换为可打印ASCII字符(A-Z, a-z, 0-9, +, /)的编码方式。其核心规则包括:

  • 每3字节(24位)拆分为4组6位,映射到字符集;
  • 不足时用 = 填充。

示例
中文“你好” → 5L2g5aW9
二进制 00000001AQ==

应用场景
邮件附件、网页嵌入图片、API传输二进制数据、加密预处理。

工具函数

  • JavaScript: btoa() / atob()
  • Python: base64.b64encode() / base64.b64decode()

三、URL编码 vs Base64 对比表

特性 URL编码 Base64
用途 URL中特殊字符转义(如 ?, # 二进制数据转文本(如图片、文件)
字符集 % + 十六进制值(如 %20 代表空格) A-Za-z0-9+/=
可逆性 完全可逆 完全可逆
填充符 有(=
数据长度 可能增加(如汉字转为3字节 %XX%XX%XX 增加约33%(4字符 → 3字节)
加密性 非加密(仅编码) 非加密(仅编码)
常见场景 URL参数、路径 邮件附件、图片嵌入、API数据传输
URL安全变体 有(- 替代 +_ 替代 /

四、关键区别总结

  1. 目标场景

    • URL编码用于确保URL本身的合法性(如保留字符)。
  2. 字符处理

    • URL编码直接替换特殊字符(如 ?%3F)。
    • Base64将所有数据转换为字符集映射(如 00000001AQ==)。
  3. 可逆性与安全性

    • 两者均为编码而非加密,敏感数据需额外加密处理。
posted @ 2025-03-26 16:31  汤龙祥  阅读(94)  评论(0)    收藏  举报