从此不再惧怕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日

相关文章

  • JavaScript实现页面跳转的八种方式

    下面是关于“JavaScript实现页面跳转的八种方式”的详细讲解: 1. 使用Location对象 使用Location对象的assign方法、replace方法或href属性来实现页面的跳转。其中,assign方法会在浏览器的历史记录中留下当前页面记录,而replace方法则不会。href属性用于读取或设置文档的地址。 // 使用assign方法来实现页…

    JavaScript 2023年6月11日
    00
  • 使用script的src实现跨域和类似ajax效果

    使用script的src属性实现跨域和类似ajax效果,是一种常见的解决网页数据获取和展示的方式。下面就具体讲解如何实现。 利用script的src属性解决跨域问题 当在网页中使用script的src属性加载跨域资源时,会受到同源策略的限制,无法直接获取资源。但我们可以通过一些技巧来绕过同源策略的限制,从而实现跨域。 JSONP JSONP是一种常用的跨域解…

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

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

    JavaScript 2023年5月28日
    00
  • JS实现字符串翻转的方法分析

    我将详细讲解“JS实现字符串翻转的方法分析”的完整攻略,过程中,我将给出两个示例说明。 JS实现字符串翻转的方法分析 基础方法 JS中,字符串翻转的基础方法是通过for循环遍历字符串,将字符串中的每一个字符从后往前拼接起来,最终得到一个翻转后的字符串。示例代码如下: function reverseStr(str) { let reversedStr = &…

    JavaScript 2023年5月28日
    00
  • JS TextArea字符串长度限制代码集合

    下面我来详细讲解一下“JS TextArea字符串长度限制代码集合”的完整攻略。 什么是JS TextArea字符串长度限制? JS TextArea字符串长度限制是指在想要限制前端页面中Textarea文本框输入的字符串长度时,可以借助JavaScript技术来实现。对于需要用户输入一些较为固定信息,比如名字、邮箱等,限制字符串长度能够保证用户输入的数据格…

    JavaScript 2023年6月11日
    00
  • vue+springboot图片上传和显示的示例代码

    下面是详细的”vue+springboot图片上传和显示的示例代码”攻略: 1. 前端部分 1.1 Vue组件设计 首先,我们需要设计一个Vue组件,用于上传图片。在组件中包含一个input元素和一个button元素,其中input的类型为file,这样用户就可以通过点击button选取图片。 <template> <div> &lt…

    JavaScript 2023年6月11日
    00
  • js正则表达式中exec用法实例

    JS正则表达式中exec用法实例 正则表达式在JavaScript中是十分常用的,exec()方法是JavaScript中正则表达式的一个重要实例方法。本文将详细讲解JS正则表达式中exec用法实例,希望对大家有所帮助。 exec()方法简述 JavaScript exec()方法是Js内置的正则表达式实例方法,用来检索字符串中与正则表达式想匹配的字符串,并…

    JavaScript 2023年6月10日
    00
  • 一篇文章了解正则表达式的替换技巧

    一篇文章了解正则表达式的替换技巧 正则表达式是一种强大的文本处理工具,可以用来匹配、替换文本中的特定字符或模式。在实际应用中,经常需要使用正则表达式进行文本替换。本文将介绍几种常见的正则表达式替换技巧,旨在帮助大家更加熟练地应用正则表达式。 基本语法 在使用正则表达式进行替换时,我们需要使用sub函数。其基本语法如下: re.sub(pattern, rep…

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