在JavaScript编码URL不编码&

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JavaScript编码URL不编码&相关的知识,希望对你有一定的参考价值。

我编码在javascript以下字符串

encodeURI = "?qry=M & L";

这给我一个输出

qry=m%20&%20l

所以,“&”从M & L是没有得到编码。我该怎么办?

答案

不编码有一个URI具有特殊意义(保留字符)的字符。下面的例子显示了所有一个URI“方案”可以包含可能的部件。

Reference

qazxsw POI不会编码下列特殊字符

encodeURI

A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
另一答案

使用encoreURIComponent代替编码let uri = "?qry=M & L" console.log(encodeURIComponent(uri))&如下所示。但它也编码其他特殊字符像%26?

=
另一答案

let uri = "?qry=M & L" console.log(encodeURIComponent(uri))不会编码encodeURI()因为它只会编码组特定的特殊字符。编码&你需要使用&

encodeURIComponent编码除一切:

encodeURI

A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) # 编码除一切:

encodeURIComponent

A-Z a-z 0-9 - _ . ! ~ * ' ( )
另一答案

您应该使用encodeURIComponent方法(),而不是是encodeURI()

注:通常encodeURIComponent方法()来编码字符串(查询字符串),将被投入到URL。如果您使用的是现有的网址进行编码,然后你可以使用是encodeURI()

MDN

参考:const uri = "?qry=M & L"; console.log(encodeURIComponent(uri));

另一答案

参考这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent你有三个选择:

url encode
另一答案

escape(str) will not encode: * @ - _ + . / encodeURI(uri) will not encode: ~!@#$&*()=:/,;?+' encodeURIComponent(uri) will not encode: ~!*()'

使用encodeURI()函数用于编码一个URI。

该功能将特殊字符编码,除非:,/? :@&= + $#(使用here编码这些字符)。

而且,还看到encodeURIComponent()

所以,你可能必须做一些像

this answer

希望这可以帮助!干杯!

以上是关于在JavaScript编码URL不编码&的主要内容,如果未能解决你的问题,请参考以下文章

如何将 URL 编码为 CakePHP 参数

URL中文编码解码

JavaScript将url转换为gb2312编码问题

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

kettle中的URL编码问题

解码已用 javascript 编码的 url