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 的一部分

相关文章
|
5月前
|
JavaScript 前端开发
javascript escape()和unescape()区别
javascript escape()和unescape()区别
41 1
|
9月前
|
JavaScript 前端开发 安全
《现代Javascript高级教程》JavaScript中的编码方法:escape、encodeURI和encodeURIComponent的深入理解
JavaScript中的编码 在编写JavaScript代码时,我们常常需要处理URLs,这时候理解JavaScript中的escape,encodeURI和encodeURIComponent函数就显得尤为重要。这些函数用于将特殊字符转化为能在URL中安全传输的形式。本文将详细介绍这三个函数的用法和区别,以帮助你更准确的处理URL编码问题。
64 0
|
前端开发 JavaScript
escape in ABAP and JavaScript
escape in ABAP and JavaScript
81 0
escape in ABAP and JavaScript
|
JavaScript 前端开发 Java
escape in ABAP and JavaScript
escape in ABAP and JavaScript
escape in ABAP and JavaScript
|
JavaScript 前端开发 Java
|
Web App开发 JavaScript 前端开发
|
JavaScript Java
JavaScript decodeURIComponent Uncaught URIError: URI malformed
使用 JavaScript 的 decodeURIComponent 方法解码使用 Java 的 URLEncoder.encode 方法编码的字符串时,产生错误: Uncaught URIError: URI malformed 产生错误的原因: 1、是使用 Java 的 URLEncoder.encode 方法编码的字符串时使用的方法姿势不对。
2627 0
|
JavaScript 前端开发 Java
JavaScript escape/unescape 编码的 Java 实现
    /** * JavaScript escape/unescape 编码的 Java 实现 * author jackyz * keep this copyright info while using this method by free * ...
761 0
|
JavaScript 前端开发 Java
在Java中正确解码用Javascript:escape()编码的中文字符
        做页面开发时使用了Javascript的escape()函数进行URL编码,如果url中有中文,结果在JSP或Servlet中用request.getParameter()时取不到参数,只返回一个空值。
1267 0
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0