您可以使用encodeURI 或URL 对查询字符串进行编码。最近,我注意到 URL 对空格的编码不同。我将讨论为什么他们以不同的方式处理编码。在深入讨论该主题之前,我将向您展示如何使用每种方法进行编码。
用法
1. 编码URI
您可以使用encodeURI 函数对URI 进行编码。然而,。它不会对属于 URI 有效部分的部分字符进行编码,因此您可能需要使用encodeURIComponent 函数来正确编码查询字符串或 URI 中的其他组件。
例如,假设您有一个值为
的查询字符串 q
https://www.google.com/search?q=& 是什么意思?.
&(& 符号)未按应有的方式转换为 &。因为 &(& 符号) 可以是 URI 的有效部分。因此,对查询字符串使用encodeURIComponent 总是更安全。
由于encodeURIX和相关函数将URI视为字符串,因此您必须处理特殊字符,例如?和你自己。或者,您可以使用 URL 来简化流程。
2. 网址
使用 URL 进行编码时,需要分别处理基本 URL 和查询字符串。
如果使用 URL 构造函数一次对所有内容进行编码,如上例所示,查询字符串可能无法正确编码。
通过 URL 对象的 searchParams 属性设置查询字符串,可以设置查询字符串。
在这种情况下,空格将转换为 .在解释为什么会发生这种情况之前,让我们用另一个查询字符串对其进行测试,看看它如何处理其他特殊字符。
其他特殊字符按预期编码。
现在,让我们深入探讨为什么会出现这些差异。
编码
1. 编码URI
encodeURIX 函数根据 RFC2396 进行编码。 URI 不仅仅是互联网上的一个位置;它可以引用任何类型的资源。这就是为什么它被称为 URI(统一资源标识符)而不是 URL(统一资源定位符)。
2. 网址
URL API 根据 RFC3986 进行编码,这是更新的 URI 规范。
如果您需要使用encodeURI来实现此行为,请参阅此。 - RF3986 的encodeURIComponent 编码)。
URLSearchParams 遵循百分比编码规则进行编码。根据文档,它将空格替换为“”。
虽然我在 RFC 中找不到此行为的规范,但 MDN 的encodeURIComponent 文档指出:
对于 application/x-www-form-urlencoded,空格将被 替换,因此人们可能希望在encodeURIComponent() 替换之后再用 .
替换
这解释了为什么 URLSearchParams 中的空格被替换为“ ”,因为它遵循 application/x-www-form-urlencoded 标准。
您可能已经注意到,URL 和 URLSearchParams 遵循不同的 RFC。
让我们看一些例子。
如图所示,URL 不对括号和冒号进行编码,因为它们是 IPv6 地址的一部分。但是,冒号不会被编码为 :,即使它是查询字符串的一部分。它与百分比编码表不同。
这意味着您需要分别对 URL 和查询字符串进行编码。
现在,URL 和查询字符串已正确编码。
结论
encodeURI、encodeURIComponent、URL 和 URLSearchParams 函数各自有不同的用途,您应该根据您的具体需求使用它们。
encodeURI:根据 RFC2396 对 URI 进行编码。它不会对属于 URI 有效部分的字符进行编码。如果您需要根据 RFC3986 对 URI 进行编码,请参阅此 MDN 文档。
encodeURIComponent:根据 RFC2396 对 URI 的组件进行编码,例如路径、片段或查询字符串。它包含未由encodeURI 编码的字符。
URL:根据 RFC3986 对 Web URL 进行编码。
URLSearchParams:根据 application/x-www-form-urlencoded 标准对参数进行编码。
如果需要将(加号)替换为 ,可以手动进行,如下所示:
在使用 Web 开发、Restful API 或 Web URL 时,URL 是可靠的选择。此外,它遵循 RFC3986,它比 RFC2396 更新。
希望您觉得这有帮助。
编码快乐!
以上是了解空格的编码方式:%withencodeURI 与 withURL的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。 1.Python以简洁语法和丰富库生态着称,适用于数据分析和Web开发。 2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安装,因为它已内置于现代浏览器中。你只需文本编辑器和浏览器即可开始使用。1)在浏览器环境中,通过标签嵌入HTML文件中运行。2)在Node.js环境中,下载并安装Node.js后,通过命令行运行JavaScript文件。

如何在Quartz中提前发送任务通知在使用Quartz定时器进行任务调度时,任务的执行时间是由cron表达式设定的。现�...

在JavaScript中如何获取原型链上函数的参数在JavaScript编程中,理解和操作原型链上的函数参数是常见且重要的任�...

在微信小程序web-view中使用Vue.js动态style位移失效的原因分析在使用Vue.js...

在Tampermonkey中如何对多个链接进行并发GET请求并依次判断返回结果?在Tampermonkey脚本中,我们经常需要对多个链...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver Mac版
视觉化网页开发工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用