[英]Issue with javascript escape, encodeURI and 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.