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


Posted in Javascript onOctober 11, 2016

一般情况下,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传递参数中含加号(+)的处理方式全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
同一页面多个商品倒计时JS 基于面向对象的javascript
Feb 16 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
Aug 20 Javascript
浅析java线程中断的办法
Jul 29 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
Dec 12 Javascript
ES6小技巧之代替lodash
Jun 07 Javascript
解决layer弹出层中表单不起作用的问题
Sep 09 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 Javascript
jQuery表单校验插件validator使用方法详解
Feb 18 jQuery
单线程JavaScript实现异步过程详解
May 19 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
JS验证图片格式和大小并预览的简单实例
Oct 11 #Javascript
js判断文件格式及大小的简单实例(必看)
Oct 11 #Javascript
js 判断附件后缀的简单实现方法
Oct 11 #Javascript
判断数组的最佳方法(推荐)
Oct 11 #Javascript
JavaScript中cookie工具函数封装的示例代码
Oct 11 #Javascript
深入理解JS中的Function.prototype.bind()方法
Oct 11 #Javascript
Bootstrap轮播插件使用代码
Oct 11 #Javascript
You might like
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
jQuery的三种$()
2009/12/30 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
主题婚礼策划方案
2014/02/10 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
中学生运动会口号
2014/06/07 职场文书
董事长致辞
2015/07/29 职场文书
2019教师的学习计划
2019/06/25 职场文书
你会写请假条吗?
2019/06/26 职场文书
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技