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/