浅谈在js传递参数中含加号(+)的处理方式
发布网友
发布时间:2022-04-25 19:20
我来回答
共1个回答
热心网友
时间:2022-04-11 23:36
一般情况下,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传递参数中含加号(+)的处理方式全部内容了,希望大家多多支持脚本之家~