浅谈在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 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
Jquery 基础学习笔记
May 29 Javascript
jquery获取radio值(单选组radio)
Oct 16 Javascript
js弹出对话框方式小结
Nov 17 Javascript
详解Node.js如何开发命令行工具
Aug 14 Javascript
Vue.js在使用中的一些注意知识点
Apr 29 Javascript
深入理解vue-loader如何使用
Jun 06 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
Dec 18 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
js实现单一html页面两套css切换代码
2013/04/11 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python线程join方法原理解析
2020/02/11 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
详解python metaclass(元类)
2020/08/13 Python
python里反向传播算法详解
2020/11/22 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
入股协议书
2014/04/14 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书