JavaScript中的编码函数

 

如果想通过get方法,提交中文 或 特殊字符等待参数(如&等 ),就须要使用js中的编码函数。

 

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

encodeURI()  

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。

不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ‘ 0-9,a-z,A-Z

如果你的页面是UTF-8编码,请使用encodeURI。

 

decodeURI()

解码由decodeURI函数编的码

 

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

encodeURIComponent()

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。

不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

如果你的页面是UTF-8编码,请使用encodeURIComponent。

 

decodeURIComponent()

 

解码由encodeURIComponent函数编的码

 

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

 

escape()  

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码

不会被此方法编码的字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

使用了escape之后必须对加号进行编码,否则,当内容含有加号时候会被服务端翻译为空格。

如果你的页面是GBK编码,请使用escape。

   

 

    var encode=function(str){
        str=escape(str);
        str=str.replace(/+/g,"%u002B");
        return str;
    };

 

 

 

 

unescape()

解码由escape函数编的码

 

 

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

 

以上的函数都不会受页面的编码方法不同的影响,如:

<meta http-equiv="Content-Type" content="text/html; charset=GBK">

 

 

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

 


encodeURI() 函数可把字符串作为“一整个”URI 进行编码。例如/My first/list.jsp?a=12&b=45&c=89 , &是参数分隔符,所以不会对?,&进
行编码

 

encodeURIComponent() 函数可把字符串作为URI的“一部分”进行编码,例如对'go&state=5'编码,会对&进行编码

 

例子:

encodeURIComponent(",/?:@&=+$#")                      返回结果:%2C%2F%3F%3A%40%26%3D%2B%24%23
encodeURIComponent("http://www.w3school.com.cn/p 1/") 返回结果:http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F    

encodeURI(",/?:@&=+$#")   			      返回结果:,/?:@&=+$#
encodeURI("http://www.w3school.com.cn/My first/")      返回结果:http://www.w3school.com.cn/My%20first/

 

你可能感兴趣的:(JavaScript中的编码函数)