浅谈在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 相关文章推荐
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
js用typeof方法判断undefined类型
Jul 15 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
Sep 22 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
JavaScript 数组中最大最小值
Jun 05 Javascript
js实现非常棒的弹出div
Oct 06 Javascript
Vue.js如何优雅的进行form validation
Apr 07 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
JavaScript中的函数式编程详解
Aug 22 Javascript
vue大型项目之分模块运行/打包的实现
Sep 21 Javascript
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中$_SERVER的详细参数与说明
2008/07/29 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
详解Python time库的使用
2019/10/10 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
SQL语言面试题
2013/08/27 面试题
ORACLE第二个十问
2013/12/14 面试题
什么是测试驱动开发(TDD)
2012/02/15 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
党员自我剖析材料
2014/08/31 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
个人欠条范本
2015/07/03 职场文书
超市店长竞聘书
2015/09/15 职场文书
go开发alertmanger实现钉钉报警
2021/07/16 Golang