Javascript 有人能告诉我为什么我们需要这个组件吗
我有一段我找不到任何解释的代码。当我在谷歌上搜索decodeURIComponent时,它说它与encodeURIComponent相反,然而,我在代码中的任何地方都找不到encodeURIComponentJavascript 有人能告诉我为什么我们需要这个组件吗,javascript,encodeuricomponent,decodeuricomponent,Javascript,Encodeuricomponent,Decodeuricomponent,我有一段我找不到任何解释的代码。当我在谷歌上搜索decodeURIComponent时,它说它与encodeURIComponent相反,然而,我在代码中的任何地方都找不到encodeURIComponent getParameterByName = (name, url) => { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, '\\$&'); con
getParameterByName = (name, url) => {
if (!url)
url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`),
results = regex.exec(url);
if (!results)
return null;
if (!results[2])
return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
这是URL
有人能给我解释一下这个代码吗 ,URI只能包含字符-.~a-zA-Z0-9
和:/?#[]@!$&'()*+,;=代码>,其中后一组具有某些特殊含义。通过限制这些字符,URL被清晰地分隔(通常由空格或换行符分隔),并通过代理和其他无法处理非ASCII字符的服务生存
如果您填写GET表单,用户输入将被编码。例如,浏览器将请求
https://www.google.com/search?q=Hell%C3%B6+L%C3%A4天%26天%2天
您可以看到,所有非ASCII字符和符号(&)都已使用百分号和中字符的十六进制表示形式进行编码
空间字符处理方式不同;由于它在用户输入中非常常见,因此被分配了较短的字符+
。这意味着+
也必须进行百分比编码,以及%2B
您拥有的代码从URL中提取GET参数name
。如果有,最后一行
return decodeURIComponent(results[2].replace(/\+/g, ' '));
首先将空格的编码撤消为+
然后用于获取name参数的值。例如,如果用户输入了RenéMüller的名字&勒内穆勒
,浏览器将发送name=Ren%C3%A9+M%C3%BCller%26%E5%8B%92%E5%86%85%E7%A9%86%E5%8B%92
,而decodeURIComponent
将产生原始输入():
可能您正在url
变量中接收已编码的字符串。我检查了window.location.href,但它不是encoded@JSLover-这只意味着输入的数据不包括任何需要编码的字符。不能保证将来不会有人输入编码字符。
> decodeURIComponent('Ren%C3%A9 M%C3%BCller%26%E5%8B%92%E5%86%85%E7%A9%86%E5%8B%92')
'René Müller&勒内穆勒'