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。

相关推荐
蹊黎22 分钟前
C++中vector类的部分简单实现
开发语言·c++·visual studio
程序猿追6 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓6 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播6 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
墨云安全7 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠8 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y8 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
jimy19 小时前
c++的 Type Traits (一)
开发语言·c++
Web极客码10 小时前
Python Ollama 本地 Agent 入门与订单查询实践
开发语言·jvm·python
kimnoic10 小时前
PHP 8.2的DNF类型怎么用才规范
开发语言·php