Javascript中与php的urldecode()函数相对应的函数是什么?

52

我编写了一个自定义的XML解析器,但在处理特殊字符时出现了卡顿。因此,我将它们进行了URL编码并保存到数据库中。

我似乎找不到与PHP的urldecode()等效的函数。

是否有适用于jquery或JavaScript的扩展库可以完成这个任务?

3个回答

106
你可以使用decodeURIComponent函数将%xx转换为字符。但是,要将+转换为空格,则需要进行额外的替换步骤。
function urldecode(url) {
  return decodeURIComponent(url.replace(/\+/g, ' '));
}

3
很棒的答案。我稍微修改了一下,使其适用于任何变量:`function urldecode(str) { 如果 (typeof str != "string") { 返回 str; } return decodeURIComponent(str.replace(/\+/g, ' ')); }` - user288926
3
请注意,此方法无法处理非标准的UTF8字符,例如'%F7'。PHP的urldecode函数仍然可以正确存储字节0xF7,而decodeURIComponent函数会抛出错误。 - JBaczuk

14

看这个

function urldecode (str) {
  return decodeURIComponent((str + '').replace(/\+/g, '%20'));
}

2
虽然这是对已经提出的答案的一个不错的补充,但你可能应该包括一些建议,说明为什么它会更好/与此处列出的其他选项相比的权衡。 - EdC
据我理解,这将把 + 转换为 %20,后者是空格的编码值(然后通过 decodeURIComponent 进行解码)。因此在理论上,这将与被接受的答案执行相同的操作,只是一种不同的方法。 - Matt

-1

我认为你需要使用decodeURI函数。


不完全(请参考肯尼的答案)。 - Pekka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接