繁体   English   中英

javascript encodeURIComponent并转义?

[英]javascript encodeURIComponent and escape?

我使用JS来将encodeURIComponent字符串发送到PHP文件写操作,并且已经工作了好多年。 直到最近我遇到一个奇怪的效果,即文本需要进一步进行转义编码才能生效! 仅当我使用开源所见即所得编辑器时,该症状才开始显示!

URI中有哪些需要转义才能解决的令人讨厌的字符? 我曾经认为URI仅保留? &=使其语法起作用。

URL涉及两个嵌套的类似URL值的级别的URL,尽管您不告诉我们字符串是什么以及如何使用字符串,但是您可能无法解释所描述的情况。

考虑一个带有查询参数的URL,它是另一个URL:

http://me.com?url=http://you.com?qp=1

该URL可能会被误解,因此我们通常you.com URL进行URL编码,从而为我们提供:

http://me.com?url=http%3A%2F%2Fyou.com%3Fqp%3D1

现在,使用此URL的人都可以提取名为url且值为http%3A%2F%2Fyou.com%3Fqp%3D1的查询参数,对其进行解码(通常框架或库会为您解码),然后使用它跳转或调用该URL。

但是,请考虑以下情况: you.com URL本身具有查询参数,而不是第一个示例中给出的?qp=1 ,而是需要自身进行URL编码的参数。 为简单起见,我们只使用“猫图片”。 我们需要对其进行编码,使查询参数

换句话说,该网址将是

?qp=cat%3Fpictures

如果我们按原样使用它,那么我们的整个URL将变为

http://me.com?url=http%3A%2F%2Fyou.com%3Fqp=cat%3Fpictures

不幸的是,如果我们现在以幼稚的方式解码它,我们会得到

http://me.com?url=http://you.com?qp=cat?pictures

换句话说,嵌套的URL也已被解码,这意味着它将认为URL具有两个查询参数,即url qp 为了成功处理此问题,我们需要第二次对第二个查询参数进行编码,得出

http://me.com?url=http%3A%2F%2Fyou.com%3Fqp%3Dcat%253Fpictures

但是请注意,如果您使用语言或环境的内置工具和库来处理查询参数,则大多数操作将自动发生,从而不必担心它。

仅当我使用开源所见即所得编辑器时,症状才开始显示

编辑器仅将字符放置在文件中。 很难想象会有一个编辑器引起您所指的问题,例如,除非某个编辑器配置为使用智能引号,否则这几乎会破坏涉及引号的所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM