encodeURIComponent(URI)
MDN解释:
encodeURIComponent(URI) 都是对统一资源标识符(URI)的组成部分进行编码的方法。
返回值:
返回URIstring的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明:
(1)该方法不会对ASCLL、字母、数字进行编码,也不会对ASCLL标点符号进行编码:如:- . ! ~ * ' ( )
(2)其他字符(比如:; / ? : @ & = + $ , # 这些用于分割URI组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
decodeURIComponent(url) 函数
用法:
decodeURIComponent() 函数可把字符串作为 URI 组件进行解码。
返回值:
解码后的文本或URI组件
在使用js的jQuery的post向后台servlet传递拼接的字符串数据时,一些特殊的字符例如:“+、@、#、
$、%、&、?、/”等无法传递到后台输出。
举个例子:
var str1="a+aa+bb@kk$dd";
var data="data1"="+str1+"+"&"+"data2"+str2;
如果不进行编码,则通过js的jQuery的post或者使用window.self.location传递数据到后台,都会造成+、@、$字符无法正常输出。
正确写法:
var str1=encodeURIComponent("a+aa+bb@kk$dd");
var data="data1"="+str1+"+"&"+"data2"+str2;
小知识
<1> 什么是URI
URI, 统一资源标识符( Unifrom Resource Identifier, URI ),表示的是web上每一中可用的资源,如: html文档、图像、视频短片、程序等都由一个 URI 进行定位的。
<2> URI的组成部分
URI通常有三部分组成:
(1)访问资源的命名机制。
(2)存放资源的主机名。
(3)资源自身的名字。
<3> URI举例
我们可以这样解释:
(1)这是一个可以通过https 协议访问的资源,
(2)位于主机 blog.csdn.net 上,
(3)通过 "/qq_1063614453/article/details/111" 可以对资源进行唯一标识
注意:以上三点只不过是对示例的解释,这三点并不是URI的必要条件,URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以。