IRONSOFTWAREHOME
开发者更新

C# URL编码(开发人员如何使用)

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年4月23日

URL 编码 和解码是 C# 中用于确保在 URL 中安全传输数据的技术。 在 C# 中,当处理 Web 应用程序、API 调用或任何需要在互联网上安全可靠传输数据的场景时,通常会遇到这些操作。 在本文中,我们将探讨 URL 编码方法和 IronPDF 库

C#中的 URL 编码

当你对 URL 进行编码时,会将其字符转换为可以在互联网上安全发送的形式,以避免任何误解。 这是因为 URL 只能使用 ASCII 字符集通过互联网发送。 对于不属于此集合的字符,或在 URL 中具有特殊含义的字符(如空格、&符号和=符号),需要使用百分比编码表示(例如,空格变为**%20**)。 C# 提供了内置的方法来完成此任务。

C#中的 URL 解码

URL 解码在到达目的地时将编码的字符恢复为其原始状态。 这是接收应用程序正确理解和处理数据所必需的。 解码将百分比编码的字符还原为其原始符号,使数据再次可读和可用。

C#中的编码方法

在 C# 中,有多种方法可以进行 URL 编码,每种方法适合不同的场景。 这些方法主要存在于System.WebSystem.Net 命名空间中,为开发人员在编码 URL 时提供了灵活性。 这里是可用方法的简要概述:

  1. **HttpUtility.UrlEncode 方法 (System.Web):**这可能是 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);
    }
}

命名空间包含: System.Web命名空间包含在代码的开头。

**原始字符串:我们定义一个字符串变量originalString,**其中包含要编码的字符,以便在 URL 中安全传输。 这包括空格和标点符号,如果未编码地包含在 URL 中,可能会导致问题。

编码:调用HttpUtility.UrlEncode方法,并将originalString作为参数。 此方法对字符串进行处理,返回一个新的字符串,其中不安全的字符被替换为百分比编码的等价物。 例如,空格被替换为**%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);
    }
}

URL 编码中的字符实体等价物: 显示的过程将 URL 路径的字符串值转换为网络兼容的字符实体等价物 (%20)。 这是至关重要的,因为 URL 不能包含实际的空格字符。

字符串值和 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);
    }
}

原始 URI: originalUri变量用表示完整 URI 的字符串进行初始化,包括带有空格和特殊字符的查询字符串。 为了确保 URI 被 Web 浏览器和服务器正确处理,这些特殊字符需要被"转义"。

转义 URI:调用Uri.EscapeUriString方法,并将originalUri作为其参数。 此方法扫描 URI 字符串并转义不被允许或可能在 URI 中引起模棱两可的字符。

**输出:**程序会将原始 URI 和转义后的 URI 同时打印到控制台。

C# URL编码(开发者工作原理):图3 - 控制台输出显示原始和编码后的字符串

IronPDF:C# PDF库

C# URL编码(开发者工作原理):图4 - IronPDF网页

IronPDF 是一个简化在 .NET 应用程序中创建、编辑和操作 PDF 文件的 PDF 库。 设计为与 C# 和 VB.NET 无缝集成,IronPDF 为开发人员提供从 HTML 生成 PDF 或直接从文本生成 PDF 的功能。 无论您是需要自动化生成发票、创建动态报告,还是在 .NET 环境中管理文档,IronPDF 都以其易用性和全面功能集脱颖而出。

IronPDF 的亮点是其 HTML 到 PDF 的转换 功能,保留您的布局和样式。 这允许从 Web 内容创建 PDF,非常适合用于报告、发票和文档。 HTML 文件、URL 和 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");
    }
}

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

在下例中,我们将看到如何将 IronPDF 与 URL 编码结合使用,从网页生成 PDF。 场景涉及编码一个 URL,以确保其格式正确,可用于 Web 请求,然后使用 IronPDF 将该 URL 的内容转换为 PDF 文档。

安装 IronPDF 库

首先,确保在您的项目中安装了 IronPDF。 如果使用 NuGet 包管理器,可以运行以下命令来安装它:

PM > Install-Package IronPdf

代码示例

现在,让我们深入代码中:

using System.Web;
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key"; // Set your IronPDF 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}");
    }
}

C# URL编码(开发者工作原理):图5 - 控制台输出显示URL转换为PDF的成功

代码解释

示例从基础 URL 和包含空格的查询字符串开始。 查询字符串使用HttpUtility.UrlEncode 编码,以确保其在 URL 中安全传输。 在编码查询后,将其附加到基础 URL 形成完整的将被访问的 URL。

在准备好完整的编码 URL 后,使用 IronPDF 的 ChromePdfRenderer 来提取该 URL 上的网页并将其转换为 PDF 文档。 这涉及创建一个 ChromePdfRenderer 类的实例,然后调用 RenderUrlAsPdf 方法处理编码 URL。 最后,使用 SaveAs 方法将生成的 PDF 保存到文件中。 结果文件是一个通过编码 URL 可以访问的网页内容的 PDF 文档。 以下是输出的 PDF 文件:

C# URL编码(开发者工作原理):图6 - 从URL输出的PDF

结论

总之,C# 提供了强大的 URL 编码和解码功能,确保数据可以安全有效地在互联网上传输。 通过 System.WebSystem.Net 命名空间中的内置方法,开发人员可以对 URL 进行编码,以防止特殊字符引起问题,并将其解码为原始形式,实现准确的数...理解。

对于那些有兴趣探索 IronPDF 试用许可报价的人,它们提供亲身评估其功能的机会。 如果您决定将IronPDF整合到您的项目中,许可证起价为$999,提供全面的功能套件以满足您在.NET框架内的PDF操作需求。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999