Ir para o conteúdo do rodapé
AJUDA DO .NET

Codificação de URL em C# (Como funciona para desenvolvedores)

A codificação e decodificação de URLs são técnicas usadas em C# para garantir a transmissão segura de dados em URLs. Em C#, essas operações são comumente encontradas ao lidar com aplicativos da web, chamadas de API ou qualquer cenário em que os dados precisem ser transmitidos pela internet de forma segura e confiável. Neste artigo, exploraremos o método de codificação de URL e a biblioteca IronPDF .

Codificação de URL em C

Ao codificar um URL, você transforma seus caracteres em um formato que pode ser enviado com segurança pela internet, evitando mal-entendidos. Isso ocorre porque os URLs só podem ser enviados pela Internet usando o conjunto de caracteres ASCII. Caracteres que não fazem parte deste conjunto, ou que têm significados especiais em URLs (como espaços, e comerciais e sinais de igual), precisam ser representados usando codificação percentual (por exemplo, espaços se tornam %20 ). O C# fornece métodos integrados para realizar essa tarefa.

Decodificação de URL em C

A decodificação de URL transforma os caracteres codificados de volta ao seu estado original ao chegarem ao destino. Isso é essencial para que o aplicativo receptor entenda e processe os dados corretamente, conforme o esperado. A decodificação transforma os caracteres codificados em porcentagem de volta em seus símbolos originais, tornando os dados legíveis e utilizáveis ​​novamente.

Métodos de codificação em C

Em C#, existem várias maneiras de realizar a codificação de URLs, cada uma adequada para diferentes cenários. Esses métodos são encontrados principalmente nos namespaces System.Web e .NET , oferecendo aos desenvolvedores flexibilidade na forma como codificam URLs. Segue uma breve descrição dos métodos disponíveis:

  1. Método HttpUtility.UrlEncode (System.Web): Este é talvez o método mais comumente usado para codificação de URL em uma aplicação web. Ele converte caracteres em um formato codificado em porcentagem, tornando a string segura para transmissão pela URL. É especialmente útil em projetos ASP.NET para codificar strings de consulta e parâmetros de formulário.
  2. Método HttpUtility.UrlPathEncode (System.Web): Ao contrário do UrlEncode , o UrlPathEncode foi projetado especificamente para codificar a parte do caminho de uma URL, deixando a string de consulta intacta. É importante notar que esse método não codifica a URL inteira, mas sim a parte do caminho, garantindo que a estrutura hierárquica da URL seja preservada.
  3. Método Uri.EscapeUriString (Sistema): Este método destina-se a escapar strings URI, convertendo todos os caracteres não permitidos em uma URI em seus equivalentes codificados em porcentagem. No entanto, não codifica certos caracteres, como a barra ( / ) e o ponto de interrogação ( ? ), porque são considerados caracteres URI válidos.
  4. Método Uri.EscapeDataString (Sistema): Este método foi projetado para codificar uma string a ser usada na parte de consulta de um URI. Ele codifica todos os caracteres, exceto os caracteres não reservados definidos na RFC 3986. É mais agressivo que o EscapeUriString , garantindo que os dados sejam codificados com segurança para transmissão em URLs.

Vamos entender os três primeiros métodos de codificação descritos acima e seu funcionamento através da análise de exemplos de código.

Exemplo de código do método 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
$vbLabelText   $csharpLabel

Inclusão de namespace: O namespace System.Web está incluído no início do código.

String original: Definimos uma variável de string chamada originalString contendo os caracteres a serem codificados para transmissão segura em uma URL. Isso inclui espaços e sinais de pontuação que podem causar problemas se incluídos em uma URL sem codificação.

Codificação: O método HttpUtility.UrlEncode é chamado com a string original como argumento. Este método processa a string e retorna uma nova string onde os caracteres inseguros são substituídos por seus equivalentes codificados em porcentagem. Por exemplo, os espaços são substituídos por %20 .

Saída: Por fim, o programa imprime as strings originais e codificadas no console.

Codificação de URL em C# (Como funciona para desenvolvedores): Figura 1 - Saída do console mostrando as strings original e codificada

Exemplo de código do método 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
$vbLabelText   $csharpLabel

Equivalentes de entidades de caracteres na codificação de URL: O processo mostrado transforma o valor da string de um caminho de URL, convertendo espaços em seus equivalentes de entidades de caracteres (%20) para compatibilidade com a web. Isso é crucial porque URLs não podem conter espaços em branco.

Manipulação de valores de string e strings de URL: O valor da string da variável originalPath é "/api/search/Hello World!", que é um exemplo típico de uma string de URL que precisa ser codificada devido à inclusão de espaços.

Embora este exemplo utilize uma versão específica de HttpUtility.UrlPathEncode sem sobrecargas de método, é importante observar a intenção do método para codificar caminhos de URL. Os desenvolvedores devem estar cientes das sobrecargas de métodos quando elas existirem, pois oferecem maneiras alternativas de usar um método, geralmente aceitando diferentes tipos de entrada ou fornecendo funcionalidades adicionais.

Codificação de Objeto e Transformação de URL em String: O objeto de codificação, neste contexto, está implícito na operação do método HttpUtility.UrlPathEncode, que recebe uma URL em formato de string e retorna sua forma codificada. Este método garante que a estrutura do caminho da URL permaneça intacta, ao mesmo tempo que codifica caracteres especiais em suas representações apropriadas.

Saída do caminho codificado: O programa demonstra a transformação do caminho original para o caminho codificado. Este é um exemplo direto de codificação de uma URL em formato de string para adaptá-la à transmissão na web, abordando os potenciais problemas que espaços e outros caracteres especiais poderiam introduzir.

Codificação de URL em C# (Como funciona para desenvolvedores): Figura 2 - Saída do console mostrando as strings original e codificada

Exemplo de código do método 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
$vbLabelText   $csharpLabel

URI original: A variável originalUri é inicializada com uma string que representa um URI completo, incluindo uma string de consulta com espaços e caracteres especiais. Para garantir que o URI seja processado corretamente pelos navegadores e servidores da web, esses caracteres especiais precisam ser "escapados".

Escapando o URI: O método Uri.EscapeUriString é invocado com originalUri como argumento. Este método analisa a string URI e remove caracteres que não são permitidos ou que poderiam causar ambiguidade em uma URI.

Saída: O programa imprime no console tanto o URI original quanto o URI com os caracteres de escape.

Codificação de URL em C# (Como funciona para desenvolvedores): Figura 3 - Saída do console mostrando as strings originais e codificadas

IronPDF: Biblioteca PDF em C

Codificação de URL em C# (Como funciona para desenvolvedores): Figura 4 - Página web do IronPDF

IronPDF é uma biblioteca PDF que simplifica a criação, edição e manipulação de arquivos PDF em aplicações .NET . Projetado para se integrar perfeitamente com C# e VB .NET, o IronPDF oferece aos desenvolvedores funções para gerar PDFs a partir de HTML ou diretamente de texto. Seja para automatizar a geração de faturas, criar relatórios dinâmicos ou gerenciar documentos em um ambiente .NET , o IronPDF se destaca pela facilidade de uso e pelo conjunto abrangente de recursos.

O grande diferencial do IronPDF é seu recurso de conversão de HTML para PDF , que mantém seus layouts e estilos. Isso permite a criação de PDFs a partir de conteúdo da web, perfeito para relatórios, faturas e documentação. Arquivos HTML, URLs e strings HTML podem ser convertidos facilmente em PDFs.

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
$vbLabelText   $csharpLabel

Exemplo de código funcional com codificação de URL

No exemplo a seguir, veremos como usar o IronPDF em conjunto com a codificação de URL para gerar um PDF a partir de uma página da web. O cenário envolve codificar um URL para garantir que ele esteja formatado corretamente para solicitações da web e, em seguida, usar o IronPDF para converter o conteúdo desse URL em um documento PDF.

Instale a biblioteca IronPDF.

Primeiro, certifique-se de ter o IronPDF instalado em seu projeto. Se você usa o NuGet Package Manager, pode instalá-lo executando o seguinte comando:

Install-Package IronPdf

Exemplo de código

Agora, vamos analisar o código:

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}");
    }
}
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}");
    }
}
Imports System.Web
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		License.LicenseKey = "License-Key" ' Set your IronPDF 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}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Codificação de URL em C# (Como funciona para desenvolvedores): Figura 5 - Saída do console sobre a conversão bem-sucedida de URL para PDF

Explicação do código

O exemplo começa com uma URL base e uma string de consulta contendo espaços. A string de consulta é codificada usando HttpUtility.UrlEncode para garantir que seja transmitida com segurança na URL. Após a codificação da consulta, ela é anexada à URL base para formar a URL completa que será acessada.

Com a URL completa e codificada em mãos, o ChromePdfRenderer do IronPDF é usado para buscar a página da web nessa URL e convertê-la em um documento PDF. Isso envolve a criação de uma instância da classe ChromePdfRenderer e, em seguida, a chamada do método RenderUrlAsPdf com a URL codificada. Por fim, o PDF gerado é salvo em um arquivo usando o método SaveAs . O arquivo resultante é um documento PDF com o conteúdo da página web, acessível através da URL codificada. Aqui está o arquivo PDF gerado:

Codificação de URL em C# (Como funciona para desenvolvedores): Figura 6 - PDF gerado a partir da URL

Conclusão

Codificação de URL em C# (Como funciona para desenvolvedores): Figura 7 - Página de licenciamento do IronPDF

Em resumo, o C# oferece recursos poderosos para codificação e decodificação de URLs, garantindo que os dados possam ser transmitidos pela internet de forma segura e eficiente. Por meio dos métodos integrados nos namespaces System.Web e .NET , os desenvolvedores podem codificar URLs para evitar problemas com caracteres especiais e decodificá-las para sua forma original, garantindo uma interpretação precisa dos dados.

Para aqueles interessados ​​em explorar as ofertas de licença de avaliação do IronPDF , elas proporcionam uma oportunidade de avaliar sua funcionalidade em primeira mão. Caso decida integrar o IronPDF em seus projetos, as licenças começam em $799, oferecendo um conjunto abrangente de recursos para atender às suas necessidades de manipulação de PDF dentro da .NET Framework.

Perguntas frequentes

Como posso codificar uma URL em C#?

Em C#, você pode usar métodos como HttpUtility.UrlEncode ou Uri.EscapeDataString para codificar URLs. Esses métodos convertem caracteres em um formato codificado em porcentagem para garantir a transmissão segura pela internet.

Qual a diferença entre codificação e decodificação de URL?

A codificação de URL transforma caracteres especiais em um formato codificado em porcentagem para garantir a transmissão segura de dados em URLs, enquanto a decodificação converte esses caracteres codificados de volta à sua forma original para a correta interpretação dos dados.

Como criar um PDF a partir de uma URL usando C#?

Você pode usar o IronPDF para converter uma URL em PDF em C#. O IronPDF permite capturar o conteúdo de uma página da web diretamente e convertê-lo em um documento PDF, integrando técnicas de codificação de URL para solicitações web precisas.

Por que a codificação de URL é importante em aplicações web?

A codificação de URLs é crucial em aplicações web, pois garante que os dados transmitidos por URLs sejam enviados de forma segura e sem erros. Ela substitui caracteres inseguros por um formato codificado em porcentagem, prevenindo possíveis corrupções de dados ou problemas de segurança.

Como a codificação de URL pode ser usada para aprimorar a geração de PDFs em C#?

Ao aplicar a codificação de URL antes de gerar PDFs, você garante que todos os URLs incluídos no documento sejam formatados corretamente e transmitidos com segurança. Bibliotecas como o IronPDF podem então processar esses URLs com precisão ao converter conteúdo da web em PDFs.

Quais métodos estão disponíveis para decodificação de URLs em C#?

C# oferece métodos como HttpUtility.UrlDecode e Uri.UnescapeDataString para decodificação de URLs. Esses métodos revertem o processo de codificação, convertendo caracteres codificados em porcentagem de volta à sua forma original.

Como a codificação de URL facilita as chamadas de API?

A codificação de URL garante que caracteres especiais em parâmetros de consulta sejam transmitidos com segurança, evitando erros durante chamadas de API. Isso é essencial para a transferência confiável de dados entre o cliente e o servidor em aplicações web.

O IronPDF consegue lidar automaticamente com a codificação de URLs ao gerar PDFs?

Sim, o IronPDF consegue lidar com a codificação de URLs automaticamente ao converter páginas da web em PDFs. Ele garante que os URLs sejam formatados e processados corretamente durante o processo de geração do PDF, proporcionando uma integração perfeita com o conteúdo da web.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim