浅谈在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 相关文章推荐
收集的网上用的ajax之chat.js文件
Apr 08 Javascript
javascript 按回车键相应按钮提交事件
Nov 02 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
Mar 04 Javascript
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
javascript进行数组追加方法小结
Jun 16 Javascript
jQuery 插件开发指南
Nov 14 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 27 Javascript
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 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学习资源和链接.
2006/12/05 PHP
php 将excel导入mysql
2009/11/09 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
JavaScript触发器详解
2007/03/10 Javascript
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python脚本实现集群检测和管理功能
2015/03/06 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
化学系大学生自荐信范文
2014/03/01 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
期末个人总结范文
2015/02/13 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang