encodeURIComponent 和 encodeURI 该用哪个?
编码单个参数值用 encodeURIComponent,它会把 & = ? / : # 一并转义,避免参数内容破坏 URL 结构;编码一条完整 URL 时用 encodeURI,它会保留这些结构字符,只转义中文、空格等非法字符。两者混用是 URL 参数出错的最常见原因。
encodeURIComponent / 整条 URL 转义 / 查询参数解析
URL 只能安全地包含一小部分 ASCII 字符,中文、空格、& = ? # 等在传输前都需要进行百分号编码(percent-encoding)。encodeURIComponent 会转义所有保留字符,适合编码单个参数值;encodeURI 则保留 : / ? # & 等结构字符,适合编码整条 URL,避免破坏其结构。
本工具提供三种模式:组件编码(等价 encodeURIComponent)、整条 URL 编码(等价 encodeURI)、查询参数解析。参数解析会把 ?a=1&b=%E4%B8%AD 拆成表格,自动解码每个键值,方便排查签名、回调地址等参数问题。
编码单个参数值用 encodeURIComponent,它会把 & = ? / : # 一并转义,避免参数内容破坏 URL 结构;编码一条完整 URL 时用 encodeURI,它会保留这些结构字符,只转义中文、空格等非法字符。两者混用是 URL 参数出错的最常见原因。
当字符串里存在一个孤立的 “%” 或后面不是两位十六进制数字时,decodeURIComponent 会直接抛错。常见于把已经解码过的文本重复解码、或拼接 URL 时未对 “%” 本身转义。可以先尝试多次解码,或手动检查异常位置的 “%”。
在 URL 路径与查询字符串中标准写法是 %20。“+” 只用于 application/x-www-form-urlencoded 表单提交的请求体。本工具遵循标准,输出 %20。