从此不再惧怕URI编码 JavaScript及C# URI编码详解

从此不再惧怕URI编码:JavaScript及C# URI编码详解

URI是什么?

URI(Uniform Resource Identifier),中文名为统一资源标识符,是用于标识抽象或物理资源的字符串。

在Web中,我们常用URI表示Web资源的位置和ID。

URI分为三个部分:

URI = scheme://host[:port]/path[?query][#fragment]

  • scheme表示访问资源所使用的协议,如http、https、ftp等;
  • host表示资源所在的主机名或IP地址;
  • port表示网络资源的端口号;
  • path表示网络资源的访问路径;
  • query表示对网络资源的请求参数;
  • fragment表示资源内部指向的锚点。

URI编码是什么?

URI编码是一种用来对URI中的非ASCII字符和特殊字符进行编码的过程,以便能够在URI中可靠地传输和解析。

URI编码使用百分号(%)后面跟两个字符的方式来表示一个字符。其中,两个字符表示该字符在ASCII字符集合中的16进制表示,例如%20表示空格符。

URI编码在JavaScript的实现

在JavaScript中,可以使用内置的 encodeURI()函数和encodeURIComponent()函数对URI编码进行处理。

encodeURI()

encodeURI()函数会对整个URI进行编码处理,不会对URL中的特殊字符进行编码。其中,特殊字符包括:

  • 保留字符:! * ' ( ) ; : @ & = + $ , / ? # [ ]
  • 非保留字符:字母、数字、- _ . ! ~ * ' ( )

示例代码:

let uri = "https://www.example.com/search?q=钓鱼岛";
let encodedUri = encodeURI(uri);
console.log(encodedUri); // 输出 https://www.example.com/search?q=%E9%92%93%E9%B1%BC%E5%B2%9B

encodeURIComponent()

encodeURIComponent()函数会对整个URI进行编码处理,同时也会对URL中的特殊字符进行编码。其中,特殊字符同上。

示例代码:

let uri = "https://www.example.com/search?q=钓鱼岛";
let encodedUri = encodeURIComponent(uri);
console.log(encodedUri); // 输出 https%3A%2F%2Fwww.example.com%2Fsearch%3Fq%3D%25E9%2592%2593%25E9%25B1%25BC%25E5%25B2%259B

URI编码在C#的实现

在C#中,可以使用System.Web.HttpUtility类中的UrlEncode()方法和UrlDecode()方法对URI编码进行处理。

UrlEncode()

UrlEncode()方法会对整个URI进行编码处理,同时也会对URL中的特殊字符进行编码。其中,特殊字符同上。

示例代码:

string uri = "https://www.example.com/search?q=钓鱼岛";
string encodedUri = System.Web.HttpUtility.UrlEncode(uri);
Console.WriteLine(encodedUri); // 输出 https%3a%2f%2fwww.example.com%2fsearch%3fq%3d%e9%92%93%e9%b1%bc%e5%b2%9b

UrlDecode()

UrlDecode()方法会对整个URI进行解码处理。

示例代码:

string uri = "https%3a%2f%2fwww.example.com%2fsearch%3fq%3d%e9%92%93%e9%b1%bc%e5%b2%9b";
string decodedUri = System.Web.HttpUtility.UrlDecode(uri);
Console.WriteLine(decodedUri); // 输出 https://www.example.com/search?q=钓鱼岛

结论

URI编码是一种对URI进行处理的重要方法,能够在URI中可靠地传输和解析非ASCII字符和特殊字符。

在JavaScript中,可以使用内置的encodeURI()函数和encodeURIComponent()函数对URI编码进行处理。

在C#中,可以使用System.Web.HttpUtility类中的UrlEncode()方法和UrlDecode()方法对URI编码进行处理。

需要注意的是,URI编码对于相同的字符,JavaScript和C#实现的编码方式可能会不同,因此在使用时需要注意URI编码的一致性。

示例

示例1

原始URI:https://baike.baidu.com/item/朝阳群众艺术馆

JavaScript编码:https://baike.baidu.com/item/%E6%9C%9D%E9%98%B3%E7%BE%A4%E4%BC%97%E8%89%BA%E6%9C%AF%E9%A6%86

C#编码:https%3A%2F%2Fbaike.baidu.com%2Fitem%2F%e6%9c%9d%e9%98%b3%e7%be%a4%e4%bc%97%e8%89%ba%e6%9c%af%e9%a6%86

示例2

原始URI:https://www.baidu.com/s?wd=%E9%92%93%E9%B1%BC%E5%B2%9B&pn=20

JavaScript编码:https://www.baidu.com/s?wd=%E9%92%93%E9%B1%BC%E5%B2%9B&pn=20

C#编码:https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%25E9%2592%2593%25E9%25B1%25BC%25E5%25B2%259B%26pn%3D20

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从此不再惧怕URI编码 JavaScript及C# URI编码详解 - Python技术站

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

相关文章

  • 全面解析Bootstrap表单使用方法(表单按钮)

    Bootstrap是目前最为流行的前端UI框架之一,它内置了很多实用的组件,其中表单是必不可少的一个组件。在表单的使用中,表单按钮起着非常重要的作用,它可以帮助我们实现一些非常实用的功能,例如提交表单、删除数据等。 下面我将为大家详细讲解如何使用Bootstrap表单按钮。 一、表单按钮的基本用法 在使用Bootstrap表单按钮的时候,我们需要先引入Boo…

    JavaScript 2023年6月10日
    00
  • 总结JavaScript中布尔操作符||与&&的使用技巧

    下面是关于“总结JavaScript中布尔操作符||与&&的使用技巧”的攻略: 1. 什么是布尔操作符 布尔操作符是指用于比较两个值并返回一个布尔值的运算符。在JavaScript中,常用的布尔操作符有 &&(与)、||(或)和!(非)。 2. 布尔操作符||(或) 2.1 基本使用 布尔操作符||的作用是在两个操作数中,只要…

    JavaScript 2023年6月11日
    00
  • JavsScript中Promise的错误捕获详解

    当我们在JavaScript中使用Promise时,可能会遇到许多错误。为了确保代码的健壮性,我们需要学习如何正确地捕获和处理这些错误。在这篇文章中,我们将深入探讨JavaScript中的Promise错误捕获,并提供一些示例说明。 Promise错误捕获详解 try-catch语句 在JavaScript中,try-catch语句是一种用于捕获运行时错误的…

    JavaScript 2023年5月18日
    00
  • 记录 Promise 的方法

    Promise 是异步编程的一种解决方案,比传统的回调函数或事件更合理和更灵活。 Promise 方法 Promise的原型方法:then/catch/finally,这三种方法很常用,then用于处理Promise转为fulfilled状态时的代码,catch用于处理Promise转为rejected状态时的代码(当然then的第二个参数也可处理rejec…

    JavaScript 2023年4月17日
    00
  • javascript计算对象长度的方法

    当我们需要计算JavaScript对象的长度时,可能会遇到一些困惑。在JavaScript中,通常使用对象字面量(例如{})或构造函数创建对象。计算对象字面量和构造函数对象长度的方法略有不同。 计算对象字面量数量的方法 计算对象字面量数量的一种常见方法是使用Object.keys()方法。它会返回对象中属性名称的数组。通过计算该数组的长度,我们可以得知对象字…

    JavaScript 2023年5月27日
    00
  • ajax jquery 异步表单验证示例代码

    当用户在网站上提交表单时,通常不希望页面重新加载或刷新。通过使用AJAX和jQuery,可以实现异步表单验证。具体攻略如下: 第一步:添加jQuery库 在页面中先添加jQuery库,确保其正常工作。可以从以下链接下载并将其添加到页面中。 <script src="https://code.jquery.com/jquery-3.5.1.mi…

    JavaScript 2023年6月10日
    00
  • 使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)

    下面就为您详细讲解如何使用JavaScript实现网页秒表功能。 一、制作基本网页结构 首先,在HTML文件中添加一个包含开始、暂停、继续、重置按钮和显示计时时间的元素。具体代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> …

    JavaScript 2023年5月27日
    00
  • 一篇文章带你详细了解JavaScript数组

    一篇文章带你详细了解JavaScript数组 JavaScript数组是一个强大的工具,可以用来存储和操作数据。本文将介绍JavaScript数组的基础知识,包括创建、访问和操作数组等方面。 创建数组 可以使用以下方法创建JavaScript数组: // 方法1:使用数组字面量 const arr1 = [1, 2, 3]; // 方法2:使用Array构造…

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