JavaScript使用escape()、encodeURI()和decodeURI()实现URI编码解码

JavaScript使用escape()、encodeURI()和decodeURI()实现URI编码解码

URI是统一资源标识符,URI包含了绝对URI和相对URI两种方式。其中,绝对URI包含协议、主机名、文件名和查询参数,而相对URI只需要相对于当前文件所属的路径进行命名即可。

URI编码就是为了解决URI含有特殊字符而无法被正确显示、传递和处理的问题。在JavaScript中,我们可以使用三个函数来实现URI编码解码,分别是:escape()encodeURI()decodeURI()

escape()

escape()函数可以将字符串中的非ASCII码字符和一些特殊字符(如空格、+、-、/、;等)转换成十六进制编码,以便于在URI中正常传输和显示。

示例代码:

var str = "Hello, 世界!";
var encoded = escape(str);
console.log(encoded); // "Hello%2C%20%E4%B8%96%E7%95%8C%21"

在上面的代码中,使用escape()函数将字符串中的中文和空格编码成了URI格式。其中,逗号和叹号等非特殊字符并没有被编码。

encodeURI()

encodeURI()函数则是更智能的URI编码函数,它只对URI不合法的字符进行编码,不会对协议名、主机名、路径和查询参数中的特殊字符进行编码。

示例代码:

var uri = "http://www.example.com/路径/文件名.html?参数=值#哈希值";
var encoded = encodeURI(uri);
console.log(encoded); // "http://www.example.com/%E8%B7%AF%E5%BE%84/%E6%96%87%E4%BB%B6%E5%90%8D.html?%E5%8F%82%E6%95%B0=%E5%80%BC#%E5%93%88%E5%B8%8C%E5%80%BC"

在上面的代码中,使用encodeURI()函数对一个URI进行了智能编码。可以注意到,只有路径中的中文和特殊字符被编码,其他的部分并没有被编码。

decodeURI()

decodeURI()函数则用于将URI中的编码字符串进行解码还原成原始字符串。

示例代码:

var encoded = "http://www.example.com/%E8%B7%AF%E5%BE%84/%E6%96%87%E4%BB%B6%E5%90%8D.html?%E5%8F%82%E6%95%B0=%E5%80%BC#%E5%93%88%E5%B8%8C%E5%80%BC";
var decoded = decodeURI(encoded);
console.log(decoded); // "http://www.example.com/路径/文件名.html?参数=值#哈希值"

在上面的代码中,使用decodeURI()函数将编码后的URI字符串还原成了原始字符串。

总结来看,escape()函数可以将所有字符编码,但是对于URI而言,它并不智能,会把很多有效的字符都编码,导致URI过长而不便传输和阅读。而encodeURI()函数则是智能编码,只对URI不合法的字符进行编码,更加适合处理URI编码的问题。最后,使用decodeURI()函数可以对编码后的URI字符串进行还原,还原成原始字符串。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript使用escape()、encodeURI()和decodeURI()实现URI编码解码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JavaScript高级之自定义异常

    JavaScript高级之自定义异常 在JavaScript中,异常是非常常见的一种错误处理方式。当出现异常时,程序会立即停止继续执行,并跳转到异常处理器。JavaScript语言本身已经提供了一些内置的异常类型,例如TypeError、ReferenceError等等,但是,在某些特定情况下,你需要自定义异常类型以更好地处理代码中的错误,这时候自定义异常类…

    JavaScript 2023年5月18日
    00
  • JavaScript Event Loop相关原理解析

    JavaScript Event Loop相关原理解析 什么是Event Loop Event Loop是JavaScript的一种异步编程模型,用于处理进程中的各种事件。 JavaScript在单线程执行的情况下,对于涉及到阻塞I/O,耗时计算等操作时,若采取同步的方式处理,会导致线程的阻塞并降低程序的响应时间和执行效率,因此JavaScript采用异步的…

    JavaScript 2023年5月28日
    00
  • JavaScript高级程序设计 错误处理与调试学习笔记

    下面我将详细讲解“JavaScript高级程序设计 错误处理与调试学习笔记”的完整攻略。 1. 学习目标 学习本篇笔记的目标是了解JavaScript中的错误处理和调试技术。具体包括以下方面: 理解JavaScript中的错误类型; 掌握JavaScript中的错误处理机制; 掌握JavaScript中的调试技术。 2. 错误类型及处理机制 在JavaScr…

    JavaScript 2023年5月27日
    00
  • 图解JavaScript中的this关键字

    图解JavaScript中的this关键字 在JavaScript中,this关键字是一个非常重要和常用的概念。this关键字代表着当前调用函数的对象。但是,由于JavaScript中函数的灵活性,this的值有时会令人不太容易理解和把握。本文将图解this的实际应用及其背后的原理,帮助读者更好地理解和应用this关键字。 this的取值方式 JavaScr…

    JavaScript 2023年5月28日
    00
  • js实现文件上传表单域美化特效

    下面是“js实现文件上传表单域美化特效”的完整攻略: 1. 简介 在网页中,文件上传表单域通常都比较难看,这时候我们可以用JS来美化一下。通过JS操作DOM元素,使文件上传表单域看起来更加美观。在本篇攻略中,我们将使用两个示例来说明如何用JS实现文件上传表单域美化特效。 2. 示例1 2.1 HTML结构 <div class="file-u…

    JavaScript 2023年5月27日
    00
  • js两种拼接字符串的简单方法(必看)

    JS两种拼接字符串的简单方法 在JavaScript中,有多种方法可以将字符串拼接在一起。在本文中,我们将介绍两种简单的方法。 方法1: 使用加号 “+” 运算符 加号运算符是最常用的字符串拼接方式之一。下面是一个简单的例子: const str1 = "Hello"; const str2 = "world"; co…

    JavaScript 2023年5月28日
    00
  • 一些常用的JS功能函数(2009-06-04更新)

    一些常用的JS功能函数是一篇介绍常用JS函数的文章,内容涵盖了字符串操作、数组操作、日期操作、基本算法等方面。本文将结合实例进行详细讲解。 字符串操作函数 字符串去首尾空格函数 trim() 这个函数可以去除字符串头尾的空格,使得字符串更加统一。 示例: let str = ‘ hello world! ‘; str = str.trim(); consol…

    JavaScript 2023年5月18日
    00
  • javascript 闭包函数做显隐内容

    下面是详细讲解“JavaScript闭包函数做显隐内容”的完整攻略。 什么是JavaScript闭包函数 JavaScript闭包函数是指内部函数可以访问外部函数的变量,即使外部函数已经执行完毕。这是由于内部函数形成了一个闭包环境,保持了对其父级作用域的引用。通过此特性,闭包函数经常被用来保护私有变量并创建模块化结构。 如何通过闭包函数来做显隐内容 通过闭包…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部