浅谈在js传递参数中含加号(+)的处理方式

JavaScript06

浅谈在js传递参数中含加号(+)的处理方式,第1张

一般情况下,URL

中的参数应使用

url

编码规则,即把参数字符串中除了

-_.

之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。

但是对于带有中文的参数来说,这种编码会使编码后的字符串变得很长。

如果希望有短一点的方式对参数编码,可以采用

base64

编码方式对字符串进行编码,但是

base64

编码方式不能处理

JavaScript

中的中文,因为

JavaScript

中的中文都是以

UTF-16

方式保存的。

base64

只能处理单字节字符,所以不能直接用

base64

对带有中文的

JavaScript

字符串进行编码。

但是可以通过

utf.js

这个程序中提供的

utf16to8

来将

UTF-16

编码的中文先转化为

UTF-8

方式,然后再进行

base64

编码。

这样编码后的字符串,在传递到服务器端后可以直接通过

base64_decode

解码成

UTF-8

的中文字符串。

但是还有个问题需要注意。

base64

编码中使用了加号(+),而

+

URL

传递时会被当成空格,因此必须要将

base64

编码后的字符串中的加号替换成

%2B

才能当作

URL

参数进行传递。

否则在服务器端解码后就会出错。

所以我们需要做的就是encodeURI(str).replace(/\+/g,'%2B')

以上就是小编为大家带来的浅谈在js传递参数中含加号(+)的处理方式全部内容了,希望大家多多支持脚本之家~

加法运算符(+)是最常见的运算符,用来求两个数值的和。

在两个操作数都是数字的时候,会做加法运算

2+4

两个参数都是字符串或在有一个参数是字符串的情况下会把另外一个参数转换为字符串做字符串拼接

"2"+"4" 拼接为"24".

2+"4" 拼接为"24".

在参数有对象的情况下会调用其valueOf或toString

优先使用valueof方法

如果运算子是一个Date对象的实例,那么会优先执行toString方法。

空对象拼接字符会显示[object Object]+字符

在只有一个字符串参数的时候会尝试将其转换为数字

+"3000" //3000

非数字字符转换为NaN

在只有一个数字参数的时候返回其正数值