URL 编码解码 / HTML 实体编解码

两者目标不同:URL 编码把字符转成 %XX 的字节序列,用于让内容安全地进入 URL;HTML 实体把字符转成 &name; 或 &#nnn; 的形式,用于让内容安全地进入 HTML 文本。用错容器两边都不生效,还可能造成二次编码。

URL 编码解码HTML 实体编解码
输出形式%E4%B8%AD 这样的百分号序列&、©、' 这样的实体
适用容器URL 的查询参数与路径HTML / XML 的文本与属性值
谁负责解码浏览器与服务器按 URL 规则HTML 解析器在渲染时
典型错误对已编码的串再编码一次,% 变成 %25把实体塞进 URL,浏览器不会解码
加密解密/编码

URL 编码解码

URL 编码(百分号编码)将 URL 中的特殊字符转换为 %XX 格式,确保安全传输。 编码:使用 encodeURIComponent 转义 解码:使用 decodeURIComponent 还原 保留字母、数字和 -_.!~*'() 等安全字符

加密解密/编码
加密解密/编码

HTML 实体编解码

HTML 实体编码将特殊字符转换为 HTML 安全的实体引用。 编码:将 < > & " 等转为实体 解码:将实体还原为原始字符 支持 37 个常用 HTML 实体

加密解密/编码

什么情况下用 URL 编码解码

  • 把搜索词、中文参数拼进链接。
  • 把回调地址整体放进另一个 URL 的参数里。
  • 处理含 &、=、# 的参数值,避免被当成分隔符。

什么情况下用 HTML 实体编解码

  • 在 HTML 里显示 < > & 这类会被误当标签的字符。
  • 把用户输入渲染进页面(还需在服务端做转义)。
  • 写模板或邮件时插入 ©、€、→ 这类符号。

一句话结论

看目标容器:进 URL 用百分号编码,进 HTML 用实体。两者都要经过时顺序是「先 URL 编码,再把结果做 HTML 转义」,反过来会得到解码后仍是实体的错误结果。

其他对比

全部工具