浅谈在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 相关文章推荐
javascript 检测浏览器类型和版本的代码
Sep 15 Javascript
基于JQuery.timer插件实现一个计时器
Apr 25 Javascript
基于jQuery的一个扩展form序列化到json对象
Dec 09 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
May 13 Javascript
AngularJS入门教程之XHR和依赖注入详解
Aug 18 Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
vue单页缓存方案分析及实现
Sep 25 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
JavaScript从原型到原型链深入理解
Jun 03 Javascript
原生JavaScript创建不可变对象的方法简单示例
May 07 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
PHP下escape解码函数的实现方法
2010/08/08 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
php常用的工具开发整理
2019/09/26 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
TopList标签和JavaScript结合两例
2007/08/12 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
jquery text()要注意啦
2009/10/30 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
jquery map方法使用示例
2014/04/23 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
安全教育心得体会
2013/12/29 职场文书
公司授权委托书
2014/10/17 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers