在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。