JS与C#编码解码

yizhihongxing

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日

相关文章

  • asp.net下模态对话框关闭之后继续执行服务器端代码的问题

    ASP.NET下模态对话框关闭之后继续执行服务器端代码的问题,可以通过以下方式实现: 1. 使用JavaScript和AJAX 在模态对话框中的“确认”或“取消”按钮中添加JavaScript代码,利用 AJAX 技术向服务器发送请求,通知服务器对话框已经被关闭,同时执行需要执行的服务器端代码。以下是示例代码: function CloseModal() {…

    JavaScript 2023年6月11日
    00
  • js常用DOM方法详解

    JS常用DOM方法详解 什么是DOM? DOM(文档对象模型)指的是HTML文档在浏览器中的表示方式。可以通过JavaScript来访问和修改文档对象模型,实现对页面的动态操作。 DOM节点的类型 DOM树中的节点有多种类型,以下是一些常见的节点类型: 元素节点(element):HTML中的标签就是元素节点; 文本节点(text):标签中的文本内容; 属性…

    JavaScript 2023年5月28日
    00
  • js调用本地exe程序的两种方式小结

    下面我将详细讲解“js调用本地exe程序的两种方式小结”,包含两条示例说明。 1. 使用ActiveXObject Windows中的IE浏览器支持ActiveX控件,可以使用ActiveXObject对象调用本地exe程序。具体步骤如下: 创建一个ActiveX对象,可以使用new ActiveXObject或者comCreateObject方法。 调用创…

    JavaScript 2023年5月27日
    00
  • Javascript Math acos() 方法

    JavaScript中的Math.acos()方法用于返回一个数的反余弦值,即弧度值。该方法接受一个参数,即要计算反余弦值的数值。以下是关于Math.acos()方法的整攻略,包括两个示例。 JavaScript Math对象的acos()方法 JavaScript Math对象中的acos()方法用于返回一个数的余弦值,即弧度值。该方法接受一个参数,即要计…

    JavaScript 2023年5月11日
    00
  • JS函数节流和防抖之间的区分和实现详解

    JS函数节流和防抖是前端开发中常用的优化技巧,以有效降低网页在滚动或者拖拽等交互操作时因为事件处理函数过多而造成的页面卡顿和性能问题。两者的实现方式也有所区别,本文将结合示例详细讲解它们之间的区分和实现方法。 什么是JS函数节流? JS函数节流指的是在一段时间内,无论触发多少次函数,只执行一次。也就是说,在执行函数的时间间隔内,不管触发了多少次函数,只有一次…

    JavaScript 2023年6月11日
    00
  • JS实现鼠标框选效果完整实例

    下面是详细的“JS实现鼠标框选效果完整实例”的完整攻略,包含两条示例说明。 概述 鼠标框选效果是一种常见的 Web 应用程序 UI 设计。具体来说,通过 JavaScript 实现鼠标框选效果,可以让用户在多个元素中选择他们想要的元素。 实现鼠标框选效果的核心在于:鼠标按下之后从鼠标按下位置到鼠标移动位置之间的所有元素会被高亮标记,鼠标释放后,所有被标记的元…

    JavaScript 2023年5月28日
    00
  • 基于JavaScript实现永远加载不满的进度条

    首先,我们需要明确什么是永远加载不满的进度条。通常的进度条是在页面加载时,根据已经加载的内容和总共需要加载的内容的比例来计算进度,然后根据计算结果来更新进度条。而永远加载不满的进度条则是一开始就处于满进度状态,然后随着页面加载,进度会逐渐减少,但是永远都不会完全填满。 实现这个效果需要完成以下几个步骤: 1. 首先,我们需要设置一个满进度条的状态 这个状态可…

    JavaScript 2023年6月10日
    00
  • javascript中数组和字符串的方法对比

    下面是详细讲解“javascript中数组和字符串的方法对比”的完整攻略。 前言 在javascript中,数组和字符串是常用的数据类型之一。它们都有各自的方法,但也有一些相同的方法。在这篇攻略中,我们将会详细讲解数组和字符串的方法对比。 数组和字符串的相同方法 length方法 数组和字符串都有一个length属性,可以获取其长度。 示例代码: let a…

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