.NET 幫助

C# URL 編碼(開發人員如何操作)

發佈 2024年4月3日
分享:

介紹

URL 編碼編碼和解碼是 C# 中用於確保數據在 URL 中安全傳輸的技術。 在 C# 中,這些操作通常在處理網路應用程式、API 呼叫或任何需要通過網際網路安全可靠地傳遞資料的情境中遇到。 在本文中,我們將探討 URL 編碼方法及其IronPDF library.

C# 中的 URL 編碼

當您編碼一個網址時,您會將其字元更改為可安全傳送到互聯網上的形式,以避免任何誤解。 這是因為網址只能使用 ASCII 字符集通過互聯網發送。 不屬於此集合的字符或在 URL 中具有特殊含義的字符(如空格、和號以及等號),需使用百分比編碼表示(例如, 空格變成 %20). C# 提供內建的方法來完成這個任務。

C#中的URL解碼

URL 解碼將編碼的字符轉換回它們到達目的地時的原始狀態。 這對於接收應用程式正確理解和處理數據至關重要。 解碼將百分比編碼的字符轉換回其原始符號,使數據再次可讀和可用。

C# 的編碼方法

在 C# 中,有多種方法可以執行 URL 編碼,每種方法適合不同的情境。 這些方法主要存在於System.WebSystem.Net命名空間中,為開發人員在URL編碼方面提供了靈活性。 以下是可用方法的簡要概述:

  1. **HttpUtility.UrlEncode 方法(System.Web)這可能是網絡應用程式中最常用的 URL 編碼方法。 它將字元轉換為百分比編碼格式,使字串在透過URL傳輸時變得安全。 在 ASP.NET 專案中,對查詢字串和表單參數進行編碼特別有用。

  2. HttpUtility.UrlPathEncode 方法(System.Web):與UrlEncode不同,UrlPathEncode**專門用於編碼URL的路徑部分,而不會影響查詢字符串。 需要注意的是,這個方法不會編碼整個URL,而是只編碼路徑部分,以確保URL的層次結構得以保存。

  3. Uri.EscapeUriString 方法(系統):此方法專為轉義 URI 字串而設計,將 URI 中不允許的所有字符轉換為其百分比編碼的對應字符。 但是,它不編碼某些字符,例如斜杠(/)和問號(),因為它們被認為是有效的 URI 字元。

  4. Uri.EscapeDataString 方法(系統):此方法旨在將字串編碼用於 URI 的查詢部分。 它對除 RFC 3986 中定義的未保留字元之外的所有字元進行編碼。這比 EscapeUriString 更具侵略性,確保資料在 URL 中傳輸時安全編碼。

    讓我們了解上述的前三種編碼方法及其工作原理,通過理解其代碼示例。

HttpUtility.UrlEncode 方法的程式碼範例

using System;
using System.Web;
class Program
{
    static void Main()
    {
        string originalPath = "/api/search/Hello World!";
        string encodedPath = UrlEncode(originalPath);
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }
    public static string UrlEncode(string originalString)
    {
        return HttpUtility.UrlEncode(originalString);
    }
}
using System;
using System.Web;
class Program
{
    static void Main()
    {
        string originalPath = "/api/search/Hello World!";
        string encodedPath = UrlEncode(originalPath);
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }
    public static string UrlEncode(string originalString)
    {
        return HttpUtility.UrlEncode(originalString);
    }
}
Imports System
Imports System.Web
Friend Class Program
	Shared Sub Main()
		Dim originalPath As String = "/api/search/Hello World!"
		Dim encodedPath As String = UrlEncode(originalPath)
		Console.WriteLine("Original Path: " & originalPath)
		Console.WriteLine("Encoded Path: " & encodedPath)
	End Sub
	Public Shared Function UrlEncode(ByVal originalString As String) As String
		Return HttpUtility.UrlEncode(originalString)
	End Function
End Class
VB   C#

命名空間包含:在程式碼的開頭包含了 System.Web 命名空間。

我們定義了一個字串變數 originalString,其中包含要編碼以便在 URL 中安全傳輸的字符。 這包括可能在未編碼情況下包含在 URL 中而導致問題的空格和標點符號。

編碼:使用 originalString 作為參數調用 HttpUtility.UrlEncode 方法。 此方法會處理字串,並返回一個將不安全字符替換為其百分比編碼等效值的新字串。 例如,空格會被替換成%20

輸出:最後,程式會將原始字串和編碼後的字串一起列印到控制台。

C# URL 編碼(開發人員如何工作):圖 1 - 主控台輸出顯示原始和編碼的字串

HttpUtility.UrlPathEncode 方法的代碼範例

using System;
using System.Web;
class Program
{
    static void Main()
    {
        // Define the original URL path, which includes spaces.
        string originalPath = "/api/search/Hello World!";
        // Use the HttpUtility.UrlPathEncode method to encode the path.
        string encodedPath = HttpUtility.UrlPathEncode(originalPath);
        // Output the original and encoded paths to the console.
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }
}
using System;
using System.Web;
class Program
{
    static void Main()
    {
        // Define the original URL path, which includes spaces.
        string originalPath = "/api/search/Hello World!";
        // Use the HttpUtility.UrlPathEncode method to encode the path.
        string encodedPath = HttpUtility.UrlPathEncode(originalPath);
        // Output the original and encoded paths to the console.
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }
}
Imports System
Imports System.Web
Friend Class Program
	Shared Sub Main()
		' Define the original URL path, which includes spaces.
		Dim originalPath As String = "/api/search/Hello World!"
		' Use the HttpUtility.UrlPathEncode method to encode the path.
		Dim encodedPath As String = HttpUtility.UrlPathEncode(originalPath)
		' Output the original and encoded paths to the console.
		Console.WriteLine("Original Path: " & originalPath)
		Console.WriteLine("Encoded Path: " & encodedPath)
	End Sub
End Class
VB   C#

URL 編碼中的字符實體等效項: 顯示的過程將 URL 路徑的字串值,將空格轉換為其字符實體等效項(%20)網頁相容性。 這很重要,因為網址不能包含真正的空格字符。

字串值與 URL 字串處理: originalPath 變數的字串值是 "/api/search/Hello World"!「,這是一個典型的 URL 字串範例,由於包含空格,需要進行編碼。

儘管此範例使用了特定版本的HttpUtility.UrlPathEncode且沒有方法重載,但必須注意該方法的設計意圖是用於編碼URL路徑。 開發人員應該注意方法重載的存在,因為它們提供了使用方法的替代方式,通常通過接受不同類型的輸入或提供額外的功能。

編碼對象與字串 URL 轉換: 在此情境中,編碼對象隱含在 HttpUtility.UrlPathEncode 方法的操作中,該方法接收一個字串 URL 並返回其編碼形式。 此方法確保在編碼特殊字符為其適當表示時,URL 路徑的結構保持不變。

編碼路徑輸出: 程式展示了從原始路徑到編碼路徑的轉換。 這是一個將字串 URL 編碼以適應網路傳輸的直接範例,解決空格和其他特殊字元可能引入的潛在問題。

C# URL 編碼(開發者使用方式):圖 2 - 顯示原始字串和編碼後字串的控制台輸出

Uri.EscapeUriString 方法的程式碼範例

using System;
class Program
{
    static void Main()
    {
        string originalUri = "https://example.com/search?query=Hello World!";
        string escapedUri = Uri.EscapeUriString(originalUri);
        Console.WriteLine("Original URI: " + originalUri);
        Console.WriteLine("Escaped URI: " + escapedUri);
    }
}
using System;
class Program
{
    static void Main()
    {
        string originalUri = "https://example.com/search?query=Hello World!";
        string escapedUri = Uri.EscapeUriString(originalUri);
        Console.WriteLine("Original URI: " + originalUri);
        Console.WriteLine("Escaped URI: " + escapedUri);
    }
}
Imports System
Friend Class Program
	Shared Sub Main()
		Dim originalUri As String = "https://example.com/search?query=Hello World!"
		Dim escapedUri As String = Uri.EscapeUriString(originalUri)
		Console.WriteLine("Original URI: " & originalUri)
		Console.WriteLine("Escaped URI: " & escapedUri)
	End Sub
End Class
VB   C#

原始 URIoriginalUri 變數被初始化為一個包含完整 URI 的字串,包括含有空格和特殊字元的查詢字串。 為了確保 URI 能夠被網絡瀏覽器和伺服器正確處理,這些特殊字符需要被「轉義」。

轉譯 URI:使用 originalUri 作為引數來調用 Uri.EscapeUriString 方法。 此方法掃描 URI 字串並對在 URI 中不允許或可能引起歧義的字元進行轉義。

輸出:程序將原始和轉義的 URI 都打印到控制台上。

C# URL 編碼(如何為開發人員工作):圖 3 - 顯示原始和編碼字符串的控制台輸出

IronPDF:C# PDF 庫

C# URL 編碼(開發人員如何使用):圖4 - IronPDF 網頁

IronPDF是一個簡化在.NET應用程式中建立、編輯和操作PDF檔案的PDF庫。 專為與 C# 和 VB.NET 無縫整合設計,IronPDF 為開發者提供功能以從 HTML 生成 PDF或直接從文字。 無論您需要自動化發票生成、創建動態報告,或是在 .NET 環境中管理文件,IronPDF 因其易於使用和全面的功能集而脫穎而出。

IronPDF 的亮點是其HTML 轉 PDF功能,保持您的佈局和樣式。 這允許從網路內容創建 PDF,非常適合用於報告、發票和文件。 HTML 檔案、URLs 和 HTML 字串可以輕鬆地轉換為 PDF。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

使用 URL 编码的工作代码示例

在以下範例中,我們將看到如何使用IronPDF結合URL編碼來從網頁生成PDF。 此情境涉及編碼 URL 以確保其正確格式化用於網頁請求,然後使用 IronPDF 將該 URL 的內容轉換為 PDF 文件。

安裝 IronPDF 庫

首先,確保您的專案中已安裝 IronPDF。 如果您使用 NuGet 套件管理器,您可以通過運行以下命令來安裝:

Install-Package IronPdf

範例程式碼

現在,讓我們深入了解程式碼:

using System.Web;
using IronPdf;
License.LicenseKey = "License-Key";
string baseUrl = "https://example.com/search";
// The query parameter with spaces that needs to be encoded
string query = "Hello World!";
// Encoding the query parameter to ensure the URL is correctly formatted
string encodedQuery = HttpUtility.UrlEncode(query);
// Constructing the full URL with the encoded query parameter
string fullUrl = $"{baseUrl}?query={encodedQuery}";
// Initialize the IronPDF HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Convert the web page at the encoded URL to a PDF document
var pdf = renderer.RenderUrlAsPdf(fullUrl);
// Save the PDF to a file
string filePath = "webpage.pdf";
pdf.SaveAs(filePath);
Console.WriteLine($"PDF successfully created from: {fullUrl}");
Console.WriteLine($"Saved to: {filePath}");
using System.Web;
using IronPdf;
License.LicenseKey = "License-Key";
string baseUrl = "https://example.com/search";
// The query parameter with spaces that needs to be encoded
string query = "Hello World!";
// Encoding the query parameter to ensure the URL is correctly formatted
string encodedQuery = HttpUtility.UrlEncode(query);
// Constructing the full URL with the encoded query parameter
string fullUrl = $"{baseUrl}?query={encodedQuery}";
// Initialize the IronPDF HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Convert the web page at the encoded URL to a PDF document
var pdf = renderer.RenderUrlAsPdf(fullUrl);
// Save the PDF to a file
string filePath = "webpage.pdf";
pdf.SaveAs(filePath);
Console.WriteLine($"PDF successfully created from: {fullUrl}");
Console.WriteLine($"Saved to: {filePath}");
Imports System.Web
Imports IronPdf
License.LicenseKey = "License-Key"
Dim baseUrl As String = "https://example.com/search"
' The query parameter with spaces that needs to be encoded
Dim query As String = "Hello World!"
' Encoding the query parameter to ensure the URL is correctly formatted
Dim encodedQuery As String = HttpUtility.UrlEncode(query)
' Constructing the full URL with the encoded query parameter
Dim fullUrl As String = $"{baseUrl}?query={encodedQuery}"
' Initialize the IronPDF HtmlToPdf renderer
Dim renderer = New ChromePdfRenderer()
' Convert the web page at the encoded URL to a PDF document
Dim pdf = renderer.RenderUrlAsPdf(fullUrl)
' Save the PDF to a file
Dim filePath As String = "webpage.pdf"
pdf.SaveAs(filePath)
Console.WriteLine($"PDF successfully created from: {fullUrl}")
Console.WriteLine($"Saved to: {filePath}")
VB   C#

C# URL 編碼(開發人員如何運作):圖5 - 成功將 URL 轉換為 PDF 的控制台輸出

程式碼說明

範例從基礎 URL 和包含空格的查詢字串開始。 查詢字串使用 HttpUtility.UrlEncode 編碼,以確保它在 URL 中安全傳輸。 將查詢編碼後,會將其附加到基礎 URL 上,以形成將被訪問的完整 URL。

有了完整的編碼 URL,IronPDF 的 ChromePdfRenderer 渲染器用於提取該 URL 的網頁並將其轉換為 PDF 文件。 這涉及到創建一個 ChromePdfRenderer 類的實例,然後使用編碼的 URL 調用 RenderUrlAsPdf。 最後,生成的 PDF 使用 SaveAs 方法保存到文件。 生成的檔案是網頁內容的 PDF 文件,可通過編碼的 URL 訪問。 這是輸出 PDF 檔案:

C# URL 編碼(開發人員的工作原理):圖 6 - 從 URL 輸出的 PDF

結論

C# URL 編碼(如何為開發人員工作):圖 7 - IronPDF 授權頁面

總結來說,C# 提供了強大的 URL 編碼和解碼功能,確保數據能夠在互聯網上安全且高效地傳輸。 透過 System.Web 和 System.Net 命名空間中的內建方法,開發人員可以編碼 URL 以防止特殊字符引起的問題,並將其解碼為原始形式以進行準確的數據解釋。

對於那些有興趣探索IronPDF 試用許可方案可用,提供親身評估其功能的機會。 如果您決定將 IronPDF 整合到您的專案中,許可證起價為 $749,提供全面的功能套件,以滿足您在 .NET 框架中對 PDF 操作的需求。

< 上一頁
C# 單元測試(開發者如何運作)
下一個 >
IndexOf C#(如何為開發人員工作)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >