Vue中js获取url参数,特殊字符的转译、逆转译

JavaScript07

Vue中js获取url参数,特殊字符的转译、逆转译,第1张

获取url中的参数:

例如:

http://11.22.33.1:8080/system?Data=12345&Token=6293

此时如果参数中含有特殊字符,如%,某些参数被转义

如何转译还原:

逆转译:

如下图,例如当传的值key等于0001时前面的0会被省略,到新的页面拿到key的值为1

因为js 喜欢将弱类型数据0002这样的string自己转成int.这个时候我们可以在0002前面拼接上任意一个数字,到了新页面以后在进行截取

var keys = '1'+key

subto(keys)

到了新页面以后

如下图,这里的firetaskid的值是个像abc这样的字符串,直接这样写的话会报错

查了一下是js转义的问题,如下图,转义一下就可以了

就像特殊字符需要转义一样,在利用url传递特殊字符时也有一个转义的过程

firetaskid = encodeURIComponent(firetaskid)

在这里我是用encodeURIComponent()这个函数解决的,encodeURIComponent()函数可把字符串作为 URI 组件进行编码。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

其他字符(比如 :/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

注意:encodeURIComponent()假定它的参数是 URI的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号. 

默认情况下中文,空格,‘&’等字符都会被浏览器自动转义一次。

如果使用的转义方法就是js原生自带的encodeURIComponent方法进行转义。

解决办法:

可以让后台的兄弟帮助多编译一次。这样就不会出现这个问题了。

可以自己编译一次,用decodeURIComponent('%26')。

下面简单的藐视一下decodeURIComponent() 这个方法:

定义和用法

decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

语法

decodeURIComponent(URIstring)

参数

URIstring    必需。一个字符串,含有编码 URI 组件或其他要解码的文本。  

返回值

URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。