javascript中escape()、unescape()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()比较

简介: 这些URI方法encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()代替了BOM的escape()和unescape()方法。

这些URI方法encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()代替了BOM的escape()和unescape()方法。URI方法更可取,因为他们对所有Unicode编号编码,而BOM方法只能对ASCII编号正确编码。尽量避免使用escape()和unescape()方法。

js对文字进行编码设计三个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、传递参数时,需要使用encodeURIComponent,这样组合的url才不会被#等特殊字段截断。

例如:

img_941ea09ddf2674c9112d4b42d9b6375d.png

2、进行url跳转时可以整体使用encodeURI

例如:location.href = encodeURI(http://cang.baidu.com/do/s?word=百度&ct=21);

3、js使用数据时可以使用escape

例如:搜藏中history纪录

4、escape对0-255以外的unicode值进行编码输出%u****格式,其他情况下escape,encodeURI,encodeURIComponent编码结果相同。

最多使用的应为encodeURIComponent,他是将中文、韩文等特殊字符装换成UTF-8格式的urll编码,所以结果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

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

unescape 方法

从用 escape 方法编码的 String 对象中返回已解码的字符串。

function unescape(charString : String) : String

参数

charString

必选。要解码的 String 对象或文本。

备注

unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符都用 ASCII 字符集当中等效的字符代替。以 %uxxxx 格式(Unicode 字符)编码的字符用十六进制编码 xxxx 的 Unicode 字符代替。注意 unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。


decodeURI 方法

返回一个已编码的统一资源标识符 (URI) 的非编码形式。

function decodeURI(URIstring : String) : String

参数

URIstring

必选。表示编码 URI 的字符串。

备注

使用 decodeURI 方法代替已经过时的 unescape 方法。

decodeURI 方法返回一个字符串值。

如果 URIString 无效,将发生 URIError。


decodeURIComponent 方法

返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。

function decodeURIComponent(encodedURIString : String) : String

必选的 encodedURIString 参数是一个表示已编码的 URI 组件的值。

备注

URIComponent 是一个完整的 URI 的一部分

相关文章
|
12月前
|
JavaScript 前端开发
javascript escape()和unescape()区别
javascript escape()和unescape()区别
76 1
|
JavaScript 前端开发 安全
《现代Javascript高级教程》JavaScript中的编码方法:escape、encodeURI和encodeURIComponent的深入理解
JavaScript中的编码 在编写JavaScript代码时,我们常常需要处理URLs,这时候理解JavaScript中的escape,encodeURI和encodeURIComponent函数就显得尤为重要。这些函数用于将特殊字符转化为能在URL中安全传输的形式。本文将详细介绍这三个函数的用法和区别,以帮助你更准确的处理URL编码问题。
116 0
|
Web App开发 JavaScript 前端开发
|
JavaScript Java
JavaScript decodeURIComponent Uncaught URIError: URI malformed
使用 JavaScript 的 decodeURIComponent 方法解码使用 Java 的 URLEncoder.encode 方法编码的字符串时,产生错误: Uncaught URIError: URI malformed 产生错误的原因: 1、是使用 Java 的 URLEncoder.encode 方法编码的字符串时使用的方法姿势不对。
2765 0
|
JavaScript 前端开发 Java
JavaScript escape/unescape 编码的 Java 实现
    /** * JavaScript escape/unescape 编码的 Java 实现 * author jackyz * keep this copyright info while using this method by free * ...
824 0
|
前端开发 搜索推荐 JavaScript
c#实现Javascript的encodeURIComponent()函数
原文  c#实现Javascript的encodeURIComponent()函数 国内外各搜索引擎,均用JavaScript的encodeURIComponent()函数对搜索关键字进行编码,终于找到了.net下的实现方法。
2475 0
|
JavaScript C# 前端开发
JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解
转:http://www.cnblogs.com/qiantuwuliang/archive/2009/07/19/1526687.html //该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
1585 0
|
JavaScript 前端开发
js中escape,encodeURI,encodeURIComponent三个函数的区别
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
1049 0
|
JavaScript 前端开发
js中escape,encodeURI,encodeURIComponent 区别(转)
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
1433 0