encodeURI( )
URI中的转义字符可用性
JavaScript 1.5; JScript 5.5; ECMAScript v3
语法
encodeURI(uri)
参数
- uri
-
一个字符串,含有URl或其他要编码的文本。
返回值
uri的副本,其中某些字符被十六进制的转义序列替换了。
抛出
- URIError
-
说明uri中含有格式化错误的Unicode替代对,不能被编码。
描述
encodeURI()是全局函数,返回参数uri的编码副本。ASCII的字母和数字不编码, 此外下面的ASCII标点符号也不编码:
- _ . ! ~ * ' ( )
因为encodeURI()的目的是给URl进行完整的编码,所以以下在URl中具有特殊含 义的ASCII标点符号也不转义:
; / ? : @ & = + $ , #
uri中的其他字符都将转换成它的UTF—8编码字符,然后用十六进制的转义序列(形式为%xx)对生成的一个、两个或三个字节的字符编码,用它们替换uri中原有的字 符。在这种编码模式中,ASCII字符由一个%xx转义字符替换,在\u0080到\u07ff 之间编码的字符由两个转义序列替换,其他的16位Unicode字符由三个转义序列替 换。
如果使用该方法编码URl,应该确保URI组件(如查询字符串)中不含有URl分隔符,如?和#。如果组件中含有这些符号,应该用encodeURIComponent()方法分别 对各个组件编码。
用方法decodeURI()可以对该方法进行解码操作。在ECMAScriptv3之前,可以用 escape()和unescape()方法(反对使用)执行相似的编码解码操作。
示例
// 返回 http://www.isp.com/app.cgi?arg1=1&arg2=hello%20world encodeURI("http://www.isp.com/app.cgi?arg1=1&arg2=hello world"); encodeURI("\u00a9"); // 版权字符编码为 %C2%A9
参阅
decodeURI( ), decodeURIComponent( ), encodeURIComponent( ), escape( ), unescape( )