js和php中url编码转换:escape()、encodeuri()、encodeuricomponent()
escape() 方法:该方法不会对 ascii 字母和数字进行编码,也不会对下面这些 ascii 标点符号进行编码: - _ . ! ~ * ' ( ) 。
encodeuri() 方法:
该方法不会对 ascii 字母和数字进行编码,也不会对这些 ascii 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 uri 进行完整的编码,因此对以下在 uri 中具有特殊含义的 ascii 标点符号,encodeuri() 函数是不会进行转义的:;/?:@&=+$,#
encodeuricomponent() 方法:该方法不会对 ascii 字母和数字进行编码,也不会对这些 ascii 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 uri 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
encodeuricomponent() 函数 与 encodeuri() 函数的区别之处:
前者假定它的参数是 uri 的一部分(比如协议、主机名、路径或查询字符串),因此 encodeuricomponent() 函数将转义用于分隔 uri 各个部分的标点符号。
总结:
通过对三个函数的分析,我们可以知道:escape()除了 ascii 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对url编码,最好不要使用此方法。
而encodeuri() 用于编码整个uri,因为uri中的合法字符都不会被编码转换。encodeuricomponent方法在编码单个uricomponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个url。
here you can see how the various javascript and php functions apply to a range of common characters:
input 			javascript 			php 		
 			escape			encodeuri			encodeuricomponent			urlencode			rawurlencode			htmlentities		
 			%20 			%20 			%20 			+ 			%20 			  		
! 			%21 			! 			! 			%21 			%21 			! 		
@ 			@ 			@ 			%40 			%40 			%40 			@ 		
# 			%23 			# 			%23 			%23 			%23 			# 		
$ 			%24 			$ 			%24 			%24 			%24 			$ 		
% 			%25 			%25 			%25 			%25 			%25 			% 		
^ 			%5e 			%5e 			%5e 			%5e 			%5e 			^ 		
& 			%26 			& 			%26 			%26 			%26 			& 		
* 			* 			* 			* 			%2a 			%2a 			* 		
( 			%28 			( 			( 			%28 			%28 			( 		
) 			%29 			) 			) 			%29 			%29 			) 		
- 			- 			- 			- 			- 			- 			- 		
_ 			_ 			_ 			_ 			_ 			_ 			_ 		
= 			%3d 			= 			%3d 			%3d 			%3d 			= 		
+ 			+ 			+ 			%2b 			%2b 			%2b 			+ 		
: 			%3a 			: 			%3a 			%3a 			%3a 			: 		
; 			%3b 			; 			%3b 			%3b 			%3b; 			; 		
. 			. 			. 			. 			. 			. 			. 		
 			%22 			%22 			%22 			%22 			%22 			 		
' 			%27 			' 			' 			%27 			%27 			' 		
\ 			%5c 			%5c 			%5c 			%5c 			%5c 			\ 		
/ 			/ 			/ 			%2f 			%2f 			%2f 			/ 		
? 			%3f 			? 			%3f 			%3f 			%3f 			? 		
			 %3c 			%3c 			%3c 			%3c 			%3c 			< 		
					> 			%3e 			%3e 			%3e 			%3e 			%3e 			> 		
~ 			%7e 			~ 			~ 			%7e 			%7e 			~ 		
[ 			%5b 			%5b 			%5b 			%5b 			%5b 			[ 		
] 			%5d 			%5d 			%5d 			%5d 			%5d 			] 		
{ 			%7b 			%7b 			%7b 			%7b 			%7b 			{ 		
} 			%7d 			%7d 			%7d 			%7d 			%7d 			} 		
  			%60 			%60 			%60 			%60 			%60
   
 
   