【发布时间】:2014-02-25 05:30:22
【问题描述】:
我在 JS 端有一个字符串 url.QueryEscaped。
url.QueryEscape 将空格替换为 + 号。它们不会在decodeURIComponent 中转换回空间。我应该手动将字符串全部替换为空格吗?解码的正确方法是什么?
【问题讨论】:
标签: javascript go
我在 JS 端有一个字符串 url.QueryEscaped。
url.QueryEscape 将空格替换为 + 号。它们不会在decodeURIComponent 中转换回空间。我应该手动将字符串全部替换为空格吗?解码的正确方法是什么?
【问题讨论】:
标签: javascript go
一种简单的方法是在解码之前将所有+ 字符替换为空格。例如:
decodeURIComponent("%2f+%2b".replace(/\+/g, " "))
会将字符串正确解码为"/ +"。请注意,有必要在解码之前执行替换,因为字符串中可能存在编码+ 个字符。
【讨论】:
QueryEscape 函数只是将空格编码为加号,并对 URL 查询组件中无效的其他字符使用百分比编码。所以 JS 端的 replace 和 decodeURIComponent 应该处理所有事情。
decodeURIComponent("%2f+%2b".replace(/\+/g, " "))