JS中的编码,解码类型及说明

可以使用encodeURIComponent在前台进行编码,C#后台使用Server.UrlDecode(paras)解码来解决此问题

前台js:

$.ajax({
    url: "",
    type: "POST",
    data: { "paras": encodeURIComponent(JSON.stringify(paras))},
    success: function (data) {

    }
});

C#后台:

string str= Server.UrlDecode(paras);

这样就可以保证参数不会被#截断了。

以上。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

另外附上js编码解码的几种方法(参考w3school:  http://www.w3school.com.cn/jsref/jsref_obj_global.asp):

编码函数 escape  encodeURI  encodeURIComponent  对应解码函数  unescape  decodeURI  decodeURIComponent

escape():

采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字) 比如: 空格符对应的编码是%20。

该方法不会对 ASCII 字母和数字进行编码(0-9,a-z,A-Z),也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

也就是说escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

为防止 中文乱码,js传值要转码,当js 用 escape() 转码时,.Net 后台可以用 HttpUtility.UrlDecode() 进行解码。

例如:

  document.cookie = "city=" +escape($(this).html());
  string city = HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["city"].Value);

  

encodeURI():

采用UTF-8编码格式把字符串作为 URI 进行编码。 该方法不会对 ASCII 字母和数字进行编码(0-9,a-z,A-Z),也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ‘ ( )

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

也就是说encodeURI不编码字符有82个:!,#,$,&,‘,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

js函数:
encodeURI("url")//编码
decodeURI("url")//解码

asp.net的函数:
Server.UrlEncode("url")//编码
Server.UrlDecode("url")//解码

encodeURIComponent() :

采用UTF-8编码格式把字符串作为 URI 组件进行编码。

该方法不会对 ASCII 字母和数字进行编码(0-9,a-z,A-Z),也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ‘ ( )

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

也就是说encodeURIComponent不编码字符有71个:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z

提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

JS编码:var result=encodeURIComponent(unit);
asp.net解码:Server.UrlDecode(Request["result"]);

注意: encodeURI和encodeURIComponent会把字符串编码成UTF-8的格式。

总结:

1 传递参数时 使用 encodeURIComponent

2 进行url跳转时可以整体使用encodeURI

3 js使用数据时使用escape

原文地址:https://www.cnblogs.com/DSC1991/p/8675101.html

时间: 2024-11-09 02:45:49

JS中的编码,解码类型及说明的相关文章

JS中URL编码参数(UrlEncode)

网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数.参数parameter由于用类似URL的形式传过去 , 所以别直接就那样赋值以下是对变量值的URL编码总结 : 意见用encodeURIComponent() , GET 和POST方法都能够发送过去Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent().这几种编码所起的功能各不相同.e

java 在JS中的编码问题

在当前的web应用中,js操作页面元素的情况越来越多,尤其是通过js发起异步请求时遇到编码问题的情况经常出现.下面介绍在js中出现编码问题的几种情况. 1.外部引入js文件 在一个单独的js文件中包含字符串输入的情况,如: <html> <head> <script src="statics/javascript/script.js" charset="gbk"></script> 如果引入一个script.js脚本,

js中String转Date类型并比较大小

1.比较常用的方法,但繁琐: 主要使用Date的构造方法:Date(int year , int month , int day) Java代码   <script> var str1 = "2009-8-9"; var arr1 = str1.split("-"); var date1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]); var str2 = "2009-8-4"; va

js中推断对象详细类型

大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2");//string alert(typeof [1,2,3]);//object alert(typeof {"name":"zhuhui"})//object </script> 从上面中我们能够看出数组和普通对象用typeof推断出来都是objec

js中判断对象具体类型

大家可能知道js中判断对象类型可以用typeof来判断.看下面的情况 <script> alert(typeof 1);//number alert(typeof "2");//string alert(typeof [1,2,3]);//object alert(typeof {"name":"zhuhui"})//object </script> 从上面中我们可以看出数组和普通对象用typeof判断出来都是object

判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解

转载自[脚本之家],原文链接:http://www.jb51.net/article/42864.htm 提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的时候可以都转换成小写,以防出错 1.typeof(param) 返回param的类型(string) 这种方法是JS中的定义的全局方法,也是编译者们最常用的方法,优点就是使用简单.好记,缺点是不能很好的

java中文乱码解决之道(六)—–javaWeb中的编码解码

在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分.首先我们来看在javaWeb中有哪些地方存在编码转换操作. 编码&解码 通过下图我们可以了解在javaWeb中有哪些地方有转码: 用户想服务器发送一个HTTP请求,需要编码的地方有url.cookie.parameter,经过编码后服务器接受HTTP请

java中文乱码解决之道(六)-----javaWeb中的编码解码

在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分.首先我们来看在javaWeb中有哪些地方存在编码转换操作. 编码&解码 通过下图我们可以了解在javaWeb中有哪些地方有转码: 用户想服务器发送一个HTTP请求,需要编码的地方有url.cookie.parameter,经过编码后服务器接受HTTP请

PHP和javascript中url编码解码详解

在实际开发中,我们可能会遇到路径编码解码的问题,下面总结了一下: PHP中: 1.urlencode(编码),urldecode(解码) $a = urlencode('http://www.baidu.com?name=test&query=字母'); echo $a //http%3A%2F%2Fwww.baidu.com%3Fname%3Dtest%26query%3D%E5%AD%97%E6%AF%8D 2.rawurlencode.rawurldecode 这个函数跟上面的大部分一模一