谁能告诉我为什么我们需要解码URIComponent

JS情人

我有这段代码,找不到任何解释。当我用谷歌的decodeURIComponent搜索时,它说是encodeURIComponent的反面,但是,我在代码中的任何地方都找不到encodeURIComponent。

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 http:// localhost:8000 / restaurant.html?id = 2

因此,有人可以为我解释此代码。

皮哈格

如RFC 3986中所定义,URI仅可包含字符-_.~a-zA-Z0-9:/?#[]@!$&'()*+,;=,其中后者具有某些特殊含义。通过限制使用这些字符,可以清楚地分隔URL(通常用空格或换行符),并且可以通过代理和其他服务处理非ASCII字符时遇到困难。

如果填写GET表单,则将对用户输入进行编码。例如,如果您搜索Hellö Lädies&Gentlemen+Bob,浏览器将要求

https://www.google.com/search?q=Hell%C3%B6+L%C3%A4dies%26Gentlemen%2BBob

您会看到所有非ASCII字符和&符号都已使用百分号和UTF-8编码的字符的十六进制表示进行了编码

空格字符的处理方式有所不同;由于它在用户输入中非常常见,因此被分配了较短的字符+这意味着+还必须进行百分比编码%2B

您拥有的代码name从URL中提取GET参数如果在那里,最后一行

return decodeURIComponent(results[2].replace(/\+/g, ' '));

首先撤消将空格编码为+

decodeURIComponent然后用于获取name参数的值。例如,如果用户输入了name的名称René Müller&勒内穆勒,浏览器将发送name=Ren%C3%A9+M%C3%BCller%26%E5%8B%92%E5%86%85%E7%A9%86%E5%8B%92decodeURIComponent并将产生原始输入(您可以自己尝试):

> decodeURIComponent('Ren%C3%A9 M%C3%BCller%26%E5%8B%92%E5%86%85%E7%A9%86%E5%8B%92')
'René Müller&勒内穆勒'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我们使用此代码请谁能告诉我

auto &&告诉我们什么?

谁能告诉我为什么8> 7 <6 = true?

谁能告诉我为什么不返回该值?

请谁能告诉我为什么输出是这样的?(蟒蛇)

谁能告诉我为什么该功能可以工作?

SceneKit统计信息窗口告诉我们什么?

当PDO告诉我们不要这样做时,为什么会生成警告?

为什么我们在Java中使用String docType?还告诉我他们的优势?

告诉我们“clientToWorld”

为什么Powershell告诉我我需要。\

为什么MySQL Workbench告诉我我需要分号?

谁能告诉我为什么我的触发器不按我预期的方式工作?

谁能解释为什么我们需要在SpriteKit中进行缩放?

谁能告诉我mfc中对话框的打开按钮功能代码(可以打开我们的PC目录)

谁能告诉我为什么我的程序会无限循环?

谁能告诉我为什么我的IFile总是返回null?

谁能告诉我为什么我在python中使用gmtime和mktime,得到错误的结果?

谁能告诉我,为什么我的js代码未在jsfiddle上运行?

谁能告诉我为什么我的过滤数组为空?

谁能告诉我为什么我的 calculateCoin 函数没有出现?

谁能告诉我为什么我的计算器名称更改为中文?

谁能告诉我为什么我的代码显示的pi值错误?

谁能告诉我为什么这个where子句没有给我结果?

谁能告诉我为什么我在针对xsd验证xml时出错?

谁能告诉我为什么我的段落链接无法点击?

谁能告诉我为什么我得到IndexError:列表索引超出范围?

谁能告诉我为什么我在此C代码中出现分段错误?

谁能告诉我为什么我的Scrollspy无法正常工作?