JS与C#编码解码

JS和C#都内置了编码和解码的功能,并提供了多种编码和解码方式。下面我将具体讲解JS和C#中的编码和解码,并提供两个示例来演示编码和解码的过程。

JS中的编码和解码

在JS中,我们通常使用encodeURIencodeURIComponent来对URL进行编码,使用decodeURIdecodeURIComponent对URL进行解码。下面是具体的使用方式:

encodeURI

var uri = 'https://www.example.com/读书?category=编程';
var encodedUri = encodeURI(uri);
console.log(encodedUri); // https://www.example.com/%E8%AF%BB%E4%B9%A6?category=%E7%BC%96%E7%A8%8B

encodeURI的作用是对URL进行编码,其中除了特定字符(例如::/?#[]@!$&'()*+,;=)外的所有字符都不会被编码。在上面的示例中,:/?=等特定字符没有被编码,而中文字符则被编码成了%E8%AF%BB%E4%B9%A6

encodeURIComponent

var uri = 'https://www.example.com/读书?category=编程';
var encodedUriComponent = encodeURIComponent(uri);
console.log(encodedUriComponent); // https%3A%2F%2Fwww.example.com%2F%E8%AF%BB%E4%B9%A6%3Fcategory%3D%E7%BC%96%E7%A8%8B

encodeURI不同的是,encodeURIComponent会对除了字母、数字、-_.!~*'()之外的所有字符进行编码。在上面的示例中,字母、数字、-_.等字符没有被编码,而中文字符则被编码成了%E8%AF%BB%E4%B9%A6

decodeURI

var encodedUri = 'https://www.example.com/%E8%AF%BB%E4%B9%A6?category=%E7%BC%96%E7%A8%8B';
var uri = decodeURI(encodedUri);
console.log(uri); // https://www.example.com/读书?category=编程

decodeURI的作用是对URL进行解码,与encodeURI相对应。在上面的示例中,%E8%AF%BB%E4%B9%A6被解码成了中文字符。

decodeURIComponent

var encodedUriComponent = 'https%3A%2F%2Fwww.example.com%2F%E8%AF%BB%E4%B9%A6%3Fcategory%3D%E7%BC%96%E7%A8%8B';
var uri = decodeURIComponent(encodedUriComponent);
console.log(uri); // https://www.example.com/读书?category=编程

encodeURIComponent相对应的是decodeURIComponent,功能是对URL进行解码。在上面的示例中,%E8%AF%BB%E4%B9%A6被解码成了中文字符。

C#中的编码和解码

在C#中,我们可以使用System.Net.WebUtilitySystem.Web.HttpUtility两个类来进行编码和解码,这两个类提供了多种编码和解码方式。下面是具体的使用方式:

System.Net.WebUtility

string uri = "https://www.example.com/读书?category=编程";
string encodedUri = WebUtility.UrlEncode(uri); 
Console.WriteLine(encodedUri); // https%3a%2f%2fwww.example.com%2f%e8%af%bb%e4%b9%a6%3fcategory%3d%e7%bc%96%e7%a8%8b

WebUtility.UrlEncode的作用是对URL进行编码,与JS中的encodeURIComponent一致。在上面的示例中,:/?=等特定字符都被编码成了%3a%2f%3f%3d,而中文字符则被编码成了%e8%af%bb%e4%b9%a6%e7%bc%96%e7%a8%8b

string encodedUri = "https%3a%2f%2fwww.example.com%2f%e8%af%bb%e4%b9%a6%3fcategory%3d%e7%bc%96%e7%a8%8b";
string uri = WebUtility.UrlDecode(encodedUri);
Console.WriteLine(uri); // https://www.example.com/读书?category=编程

与JS中的decodeURIComponent相似,WebUtility.UrlDecode的作用是对URL进行解码。在上面的示例中,%e8%af%bb%e4%b9%a6%e7%bc%96%e7%a8%8b被解码成了中文字符。

System.Web.HttpUtility

string uri = "https://www.example.com/读书?category=编程";
string encodedUri = HttpUtility.UrlEncode(uri); 
Console.WriteLine(encodedUri); // https%3a%2f%2fwww.example.com%2f%e8%af%bb%e4%b9%a6%3fcategory%3d%e7%bc%96%e7%a8%8b

HttpUtility.UrlEncode的作用与WebUtility.UrlEncode一致,在上面的示例中的结果也是一样的。

string encodedUri = "https%3a%2f%2fwww.example.com%2f%e8%af%bb%e4%b9%a6%3fcategory%3d%e7%bc%96%e7%a8%8b";
string uri = HttpUtility.UrlDecode(encodedUri);
Console.WriteLine(uri); // https://www.example.com/读书?category=编程

同样的,HttpUtility.UrlDecode的作用与WebUtility.UrlDecode一致,在上面的示例中的结果也是一样的。

综上所述,无论是JS还是C#,我们都可以使用内置的编码和解码函数对URL进行处理,以处理URL中的特殊字符。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS与C#编码解码 - Python技术站

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

相关文章

  • Javascript中的数学函数

    Javascript中的数学函数 Javascript提供了许多数学函数可以在你的应用程序中使用,以下是常用的数学函数: Math.abs() Math.abs()函数返回一个数字的绝对值,即该数字的数值大小,忽略其正负号。 示例代码如下: Math.abs(-1); //结果为1 Math.abs(2); //结果为2 Math.abs(-2.5); //…

    JavaScript 2023年5月18日
    00
  • Javascript 调用 ActionScript 的简单方法

    要在 JavaScript 中调用 ActionScript,可以借助 Adobe Flash 中提供的 ExternalInterface 类,该类的作用是为 ActionScript 提供一种在 Flash Player 中嵌入 JavaScript 代码的通信桥梁,使得 JavaScript 可以调用 ActionScript 中的函数或方法。 以下是…

    JavaScript 2023年5月27日
    00
  • JS 5种遍历对象的方式

    JS中有5种遍历对象的方式,分别为for…in、Object.keys()、Object.getOwnPropertyNames()、Object.values()和Object.entries()。下面详细介绍这5种遍历方式的用法及示例。 for…in for…in语句可用于遍历对象的属性。它比较慢,但用的相对频率最高,因为它适用于对象和数组(…

    JavaScript 2023年5月27日
    00
  • nodejs模块学习之connect解析

    nodejs模块学习之connect解析 简介 Connect是Node.js的中间件框架,它利用中间件将请求和响应对象传递给链中的下一个中间件,以此实现在请求处理过程中的各种逻辑处理。Connect的特点是非常小,轻量级,所有功能都是由各种中间件来实现的。 安装 可以使用npm来安装Connect: npm install connect 用法 在Node…

    JavaScript 2023年5月28日
    00
  • Android WebView使用方法详解 附js交互调用方法

    Android WebView使用方法详解 附js交互调用方法 一、Android WebView使用方法 WebView是Android提供的一个用于展示网页的组件。它支持HTML、CSS和JavaScript等Web标准,并可以与原生代码进行交互。 1.1 在XML布局文件中使用WebView 在布局文件中添加一个WebView控件: <WebVi…

    JavaScript 2023年6月11日
    00
  • JavaScript封装Vue-Router实现流程详解

    首先需要明确一点,Vue-Router是一个Vue.js插件,我们可以通过引入Vue-Router并挂载到Vue实例上来实现前端路由功能。而封装Vue-Router是为了方便我们在项目中使用,并且增强Vue-Router的功能和易用性。 以下是封装Vue-Router的流程: 安装Vue-Router npm install vue-router -S 创建…

    JavaScript 2023年6月11日
    00
  • JS时间戳转换为常用时间格式的三种方式

    下面我将详细介绍JS时间戳转换为常用时间格式的三种方式。 1. 使用JavaScript内置方法 JavaScript内置了Date对象,并提供了很多与时间相关的方法,可以通过以下代码将时间戳转换为常用时间格式: function timestampToTime(timestamp) { const date = new Date(timestamp * 1…

    JavaScript 2023年5月27日
    00
  • 基于javascript的拖拽类封装详解

    基于javascript的拖拽类封装详解 拖拽是Web开发中比较常见的一种交互方式,它可以让用户直接拖拽页面上的元素完成一些操作,如实现拖拽排序、拖拽上传等功能。本文将详细讲解如何使用JavaScript来封装一个拖拽类,以实现可复用的拖拽功能。 实现思路 我们需要实现一个拖拽类,它具备以下功能: 鼠标按下时,记录鼠标相对元素左上角的偏移量; 鼠标移动时,根…

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