c# 解码 encodeURIComponent

在C#中,如果你需要解码由encodeURIComponent方法编码的URL,你可以使用System.Web命名空间中的HttpUtility.UrlDecode方法。这个方法可以处理由JavaScript的encodeURIComponent方法编码的字符串。

首先,确保你的项目中引用了System.Web命名空间。如果你使用的是.NET Core或.NET 5/6等较新版本,你可能需要安装Microsoft.AspNetCore.WebUtilities包来使用QueryHelpers.ParseQuery和QueryHelpers.AddQueryString方法,因为从.NET Core 3.0开始,System.Web命名空间不再包含在默认项目中。

使用HttpUtility.UrlDecode(适用于.NET Framework) 如果你的项目是.NET Framework项目,可以直接使用HttpUtility.UrlDecode。

复制代码
using System;
using System.Web; // 引入System.Web命名空间
 
class Program
{
    static void Main()
    {
        string encodedString = "Hello%20World%21"; // 例如,由encodeURIComponent编码的字符串
        string decodedString = HttpUtility.UrlDecode(encodedString);
        Console.WriteLine(decodedString); // 输出: Hello World!
    }
}

使用QueryHelpers.ParseQuery和QueryHelpers.AddQueryString(适用于.NET Core或.NET 5/6) 对于.NET Core或.NET 5/6项目,你可以使用以下方式:

复制代码
using System;
using Microsoft.AspNetCore.WebUtilities; // 引入Microsoft.AspNetCore.WebUtilities命名空间
using System.Collections.Generic;
 
class Program
{
    static void Main()
    {
        string encodedString = "Hello%20World%21"; // 例如,由encodeURIComponent编码的字符串
        var decodedString = QueryHelpers.AddQueryString("", encodedString); // 使用AddQueryString进行解码,虽然这不是最直接的方法,但可以作为一种方式处理解码。
        Console.WriteLine(decodedString); // 输出: Hello World!
    }
}

然而,对于简单的解码需求,直接使用Uri.UnescapeDataString或.NET Core 3.0及以后版本的System.Web.HttpUtility.UrlDecode会是更好的选择。例如:

复制代码
string decodedString = Uri.UnescapeDataString(encodedString); // 使用Uri类进行解码
Console.WriteLine(decodedString); // 输出: Hello World!

或者,如果你使用的是较新版本的.NET Core并且想要使用类似于HttpUtility.UrlDecode的功能:

复制代码
string decodedString = System.Net.WebUtility.UrlDecode(encodedString); // 使用System.Net.WebUtility类进行解码(适用于较新版本的.NET Core)
Console.WriteLine(decodedString); // 输出: Hello World!

确保根据你的项目类型(例如是否为.NET Framework或.NET Core/5/6等)选择合适的方法。在较新的项目中,推荐使用System.Net.WebUtility.UrlDecode。

相关推荐
乐观勇敢坚强的老彭2 分钟前
C++ 竞赛常用算法模板速查表
开发语言·c++·算法
离陌在学C#16 分钟前
C# 泛型:从基础到高级应用
开发语言·c#
ly768916 分钟前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
SomeB1oody19 分钟前
【RustyML入门】2.13. 孤立森林
开发语言·后端·机器学习·rust·教程
Vertira32 分钟前
C# 与 OpencvSharp 编程[基础目录]
c#
萧瑟余晖33 分钟前
Java深入解析篇三十之Java日志框架
java·开发语言
Herbert_hwt1 小时前
【C语言基础】常量、选择结构与运算符全解析
c语言·开发语言·算法
AI视觉网奇1 小时前
动作识别 视频理解大模型
开发语言·python·音视频
SomeB1oody1 小时前
【RustyML入门】3.8. 正则化与归一化层
开发语言·后端·机器学习·rust·教程
__zRainy__2 小时前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript