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

一般情况下,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‘)

转:技术成就梦想

时间: 2024-12-29 10:21:23

在js传递参数中含加号(+)的处理方式的相关文章

js传递参数中包含+号时的处理方法

encodeURI(url).replace(/\+/g, '%2B') 例子: $scope.getAnesthesiawaystatistical = function (annual, anesthesiaMethodRep) { var Anesthesiurl = "/api/v1/AnesthesiAwayStatistical/GetAnesthesiAwayStatisticalCount?anesthesiaMethodRep=" + "'" +

post 传递参数中包含 html 代码解决办法,js加密,.net解密

今天遇到一个问题,就是用post方式传递参数,程序在vs中完美调试,但是在iis中,就无法运行了,显示传递的参数获取不到,报错了,查看浏览器请求情况,错误500,服务器内部错误,当时第一想法是接收方式有问题,换了无数次接收方式,都没有效,后来在请求情况的,Response中发现,其实根本原因是由于post参数中不能包含html代码,设计到跨域攻击...,所以被禁止了. 微软给出的建议是 ASP.NET Web窗体中禁用请求验证 ,我是没成功,后来我查到其实可以用在前端用js base64加密,后

WPF Webbrowser中与JS传递参数

没什么特殊的. 要点一:使用json传递参数. 比如说我传递的数字数组到js中,我首先将参数转换为json.在传递js中,在函数中确保转成数字,最后添加到需要的地方即可 js代码: function getdatafromday(d ,t) { data0.time=d.split(","); var ds = JSON.parse(t) var cs =[]; for(var p in ds) { var o = parseInt(ds[p].O); var c = parseInt

js传递参数

/js中参数的传递之数值传递 //这次传递相当于将count的值拷贝了一份给num,num的改变并不影响count(两块不同的内存区域) function addTen(num){ num += 10; return num; } var count = 20; var result = addTen(count); console.log(count); //20 console.log(result); //30 //js中参数传递之对象的传递 //这次传递是person的值(person在

js与php传递参数

http://jingyan.baidu.com/article/0aa22375b722ba88cd0d6446.html 这个问题在网页开发时经常遇到,其实解决办法非常简单,就是几行代码的事,不过各种js.php书上都没有,百度下来也乱七八糟的,有的能用,有的不能用.小编遇到这问题时认认真真研究了一上午,研究出一点心得,希望可以帮到你! 方法/步骤 第一种情况: 两个不在同一页面(js一个页面,php在另一个页面) 第一种方法: 通过url传参.js传过去,php接收,或者php传过去,js

vue-router传递参数的几种方式

vue-router传递参数分为两大类 编程式的导航 router.push 声明式的导航<router-link> 编程式的导航router.push 传递参数分为两种类型:字符串,对象 字符串 字符串的方式是直接将路由地址以字符串的方式来跳转,这种方式简单但不能传递参数 this.$router.push("home"); 对象 想要传递参数主要就是以对象的方式来写,分为两种方式:命名路由,查询参数 1.命名路由 命名路由的前提是在注册路由的地方给路由命名如: 命名路由

js的url中传递中文参数乱码,如何获取url中参数问题

一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript”> function send(){ var url = "test01.html"; var userName = $("#userName").html(); window.open(encodeURI(url + "?userName="

js中函数传递参数,究竟是值传递还是引用传递?

记住真理: js函数传递参数,不管是简单数据类型,还是引用数据类型,都是值传递!! 下面是js红包书里面的例子: function setName(obj) { obj.name = "Nicholas"; obj = new Object(); obj.name = "Greg"; } var person = new Object(); setName(person); alert(person.name); // "Nicholas" 肯定

UIWebView开发中,js与oc,js与swift交互,相互传递参数的方法

实际开发中经常遇到需要向webView传递参数或从webView取参数,在此写了个超简单的demo供大家参考,本人js刚学了一天,所以不足之处海涵. 废话不多说,直接上代码 oc版 1 #import "ViewController.h" 2 @interface ViewController ()<UIWebViewDelegate> 3 @property (nonatomic, strong)UIWebView * webView; 4 @end 5 6 @imple