js URL编码方法的比较
2009-06-24 11:07
501 查看
javascrīpt中存在几种对URL字符串进行编码的方法
:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。
escape() 方法:
采用ISO
Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此方法编码的字符:@ * /
+
encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。
不会被此方法编码的字符:! @ #
$& * ( ) = : / ; ? + '
encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 /
等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码的字符:! * ( )
'
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascrīpt1.5之后引进的,escape则在javascrīpt1.0版本就有。
:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。
escape() 方法:
采用ISO
Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此方法编码的字符:@ * /
+
encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。
不会被此方法编码的字符:! @ #
$& * ( ) = : / ; ? + '
encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 /
等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码的字符:! * ( )
'
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascrīpt1.5之后引进的,escape则在javascrīpt1.0版本就有。
相关文章推荐
- JS中URL编码方法的比较
- JS中URL编码方法的比较
- JS中URL编码方法的比较
- 使用JS判断是否数字和小数点组合的数字的两中方法比较(isNaN和逐判断)
- js从输入框读取内容,比较两个数字的大小方法
- 比较JS合并数组的各种方法及其优劣
- js向一个数组中插入元素的几个方法-性能比较
- JS中字符串转换为日期对象的方法JS中如何计算时间,如何比较时间
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- js中的apply()和 call() 方法比较
- JS两个数组比较,删除重复值的巧妙方法(推荐)
- Javascript中URL编码方法的比较
- js保留两位小数和两个数比较大小的方法
- js获取、比较浏览器名称和版本号的简便方法
- JS两个数组比较,删除重复值巧妙方法
- js比较日期的方法
- JS比较两个数值大小的正确方法
- 用js在TextArea中的光标位置插入内容的方法(比较完美)
- 关于js和php对url编码的处理方法