AYUDA .NET

C# URL Encode (Cómo funciona para desarrolladores)

Actualizado 3 de abril, 2024
Compartir:

Introducción

**Codificación URL y descodificación son técnicas utilizadas en C# para garantizar la transmisión segura de datos dentro de las URL. En C#, estas operaciones son comunes cuando se trata de aplicaciones web, llamadas API, o cualquier escenario donde los datos necesitan ser pasados a través de Internet de forma segura y fiable. En este artículo, exploraremos el método de codificación URL y el método Biblioteca IronPDF.

Codificación de URL en C#

Cuando codificas una URL, cambias sus caracteres a una forma que puede enviarse con seguridad a través de Internet, evitando cualquier malentendido. Esto se debe a que las URL sólo pueden enviarse por Internet utilizando el juego de caracteres ASCII. Caracteres que no forman parte de este conjunto o que tienen un significado especial en las URL (como espacios, ampersands, y signos de igual)deben representarse utilizando la codificación porcentual (por ejemplo, los espacios se convierten en %20). C# proporciona métodos integrados para realizar esta tarea.

Descodificación de URL en C#

La descodificación de URL transforma los caracteres codificados a su estado original al llegar a su destino. Esto es esencial para que la aplicación receptora entienda y procese correctamente los datos según lo previsto. La descodificación devuelve los caracteres codificados porcentualmente a sus símbolos originales, con lo que los datos vuelven a ser legibles y utilizables.

Métodos de codificación en C#

En C#, hay varias maneras de realizar la codificación URL, cada una adecuada para diferentes escenarios. Estos métodos se encuentran principalmente en los espacios de nombres System.Web y System.Net, lo que ofrece a los desarrolladores flexibilidad a la hora de codificar las URL. He aquí un breve resumen de los métodos disponibles:

  1. Método HttpUtility.UrlEncode (Sistema.Web): Este es quizás el método más utilizado para la codificación de URL en una aplicación web. Convierte los caracteres a un formato codificado porcentualmente, lo que hace que la cadena sea segura para su transmisión a través de la URL. Es especialmente útil en proyectos ASP.NET para codificar cadenas de consulta y parámetros de formularios.
  2. Método HttpUtility.UrlPathEncode (Sistema.Web): A diferencia de UrlEncode, UrlPathEncode está diseñado específicamente para codificar la parte de la ruta de una URL, dejando la cadena de consulta intacta. Es importante tener en cuenta que este método no codifica toda la URL, sino la parte de la ruta, lo que garantiza la conservación de la estructura jerárquica de la URL.
  3. Método Uri.EscapeUriString (Sistema): Este método está pensado para escapar cadenas URI, convirtiendo todos los caracteres no permitidos en una URI en sus equivalentes codificados porcentualmente. Sin embargo, no codifica determinados caracteres, como la barra oblicua (/) y signo de interrogación (?)porque se consideran caracteres URI válidos.
  4. Método Uri.EscapeDataString (Sistema): Este método está diseñado para codificar una cadena que se utilizará en una parte de consulta de un URI. Codifica todos los caracteres excepto los caracteres no reservados definidos en RFC 3986. Es más agresivo que EscapeUriString, lo que garantiza que los datos se codifican de forma segura para su transmisión dentro de las URL.

    Vamos a entender los tres primeros métodos de codificación descritos anteriormente, y su funcionamiento mediante la comprensión de sus ejemplos de código.

Ejemplo de código del 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
VB   C#

Inclusión del espacio de nombres: El espacio de nombres System.Web se incluye al principio del código.

Cadena original: Definimos una variable de cadena cadenaoriginal que contiene los caracteres a codificar para su transmisión segura en una URL. Esto incluye espacios y signos de puntuación que podrían causar problemas si se incluyen en una URL sin codificar.

Codificación: El método HttpUtility.UrlEncode es llamado con originalString como argumento. Este método procesa la cadena y devuelve una nueva cadena en la que los caracteres no seguros se sustituyen por sus equivalentes codificados porcentualmente. Por ejemplo, los espacios se sustituyen por %20.

Salida: Finalmente, el programa imprime en la consola tanto la cadena original como la codificada.

Codificación de URL en C# (Cómo funciona para desarrolladores): Figura 1 - Salida de la consola mostrando las cadenas original y codificada

Ejemplo de código del método HttpUtility.UrlPathEncode

using System;
using System.Web;
class Program
{
    static void Main()
    {
        //  Defina la ruta URL original, que incluye espacios.
        string originalPath = "/api/search/Hello World!";
        //  Utilice el método HttpUtility.UrlPathEncode para codificar la ruta.
        string encodedPath = HttpUtility.UrlPathEncode(originalPath);
        //  Envía las rutas original y codificada a la consola.
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }
}
using System;
using System.Web;
class Program
{
    static void Main()
    {
        //  Defina la ruta URL original, que incluye espacios.
        string originalPath = "/api/search/Hello World!";
        //  Utilice el método HttpUtility.UrlPathEncode para codificar la ruta.
        string encodedPath = HttpUtility.UrlPathEncode(originalPath);
        //  Envía las rutas original y codificada a la consola.
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }
}
Imports System
Imports System.Web
Friend Class Program
	Shared Sub Main()
		'  Defina la ruta URL original, que incluye espacios.
		Dim originalPath As String = "/api/search/Hello World!"
		'  Utilice el método HttpUtility.UrlPathEncode para codificar la ruta.
		Dim encodedPath As String = HttpUtility.UrlPathEncode(originalPath)
		'  Envía las rutas original y codificada a la consola.
		Console.WriteLine("Original Path: " & originalPath)
		Console.WriteLine("Encoded Path: " & encodedPath)
	End Sub
End Class
VB   C#

Equivalentes de entidades de caracteres en la codificación URL: El proceso mostrado transforma el valor de cadena de una ruta URL, convirtiendo los espacios en sus equivalentes de entidad de caracteres. (%20) para compatibilidad web. Esto es crucial porque las URL no pueden contener caracteres de espacio reales.

Valor de cadena y manejo de cadena URL: El valor de cadena de la variable originalPath es "/api/search/Hello World!", que es un ejemplo típico de cadena URL que necesita codificación debido a la inclusión de espacios.

Aunque este ejemplo utiliza una versión específica de HttpUtility.UrlPathEncode sin sobrecargas de método, es importante tener en cuenta la intención de diseño del método para codificar rutas URL. Los desarrolladores deben ser conscientes de las sobrecargas de métodos cuando existen, ya que proporcionan formas alternativas de utilizar un método, a menudo aceptando diferentes tipos de entrada o proporcionando funcionalidad adicional.

**El objeto de codificación en este contexto está implícito en la operación del método HttpUtility.UrlPathEncode, que toma una cadena URL y devuelve su forma codificada. Este método garantiza que la estructura de la ruta URL permanezca intacta mientras se codifican los caracteres especiales en sus representaciones apropiadas.

Salida de la ruta codificada: El programa demuestra la transformación de la ruta original a la ruta codificada. Se trata de un ejemplo directo de codificación de una cadena URL para adaptarla a la transmisión web, abordando los posibles problemas que podrían introducir los espacios y otros caracteres especiales.

Codificación de URL en C# (Cómo funciona para desarrolladores): Figura 2 - Salida de la consola mostrando las cadenas original y codificada

Ejemplo de código del método Uri.EscapeUriString

using System;
class Program
{
    static void Main()
    {
        string originalUri = "https://example.com/search?query=¡Hola Mundo!";
        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=¡Hola Mundo!";
        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=¡Hola Mundo!"
		Dim escapedUri As String = Uri.EscapeUriString(originalUri)
		Console.WriteLine("Original URI: " & originalUri)
		Console.WriteLine("Escaped URI: " & escapedUri)
	End Sub
End Class
VB   C#

URI original: La variable originalUri se inicializa con una cadena que representa un URI completo, incluyendo una cadena de consulta con espacios y caracteres especiales. Para que los navegadores y servidores web procesen correctamente el URI, estos caracteres especiales deben "escaparse".

Escapar la URI: El método Uri.EscapeUriString se invoca con originalUri como argumento. Este método escanea la cadena URI y escapa los caracteres que no están permitidos o que podrían causar ambigüedad en una URI.

Salida: El programa imprime tanto el URI original como el escapado en la consola.

Codificación de URL en C# (Cómo funciona para desarrolladores): Figura 3 - Salida de la consola mostrando las cadenas original y codificada

IronPDF: C# Biblioteca PDF

Codificación de URL en C# (Cómo funciona para desarrolladores): Figura 4 - Página web de IronPDF

IronPDF es una biblioteca PDF que simplifica la creación, edición y manipulación de archivos PDF en aplicaciones .NET. Diseñado para integrarse perfectamente con C# y VB.NET, IronPDF ofrece a los desarrolladores las funciones para **Generar PDF a partir de HTML o directamente a partir de un texto. Tanto si necesita automatizar la generación de facturas como crear informes dinámicos o gestionar documentos en un entorno .NET, IronPDF destaca por su facilidad de uso y su completo conjunto de funciones.

Ejemplo de código con codificación URL

En el siguiente ejemplo, veremos cómo utilizar IronPDF junto con la codificación URL para generar un PDF a partir de una página web. El escenario consiste en codificar una URL para garantizar que está correctamente formateada para las solicitudes web y, a continuación, utilizar IronPDF para convertir el contenido de esa URL en un documento PDF.

Instalar la biblioteca IronPDF

En primer lugar, asegúrese de que tiene IronPDF instalado en su proyecto. Si utiliza NuGet Package Manager, puede instalarlo ejecutando:

Install-Package IronPdf

Ejemplo de código

Ahora, vamos a sumergirnos en el código:

using System.Web;
using IronPdf;
License.LicenseKey = "License-Key";
string baseUrl = "https://ejemplo.com/buscar";
//  El parámetro de consulta con espacios que debe codificarse
string query = "Hello World!";
//  Codificación del parámetro de consulta para garantizar el formato correcto de la URL
string encodedQuery = HttpUtility.UrlEncode(query);
//  Construcción de la URL completa con el parámetro de consulta codificado
string fullUrl = $"{baseUrl}?query={encodedQuery}";
//  Inicializar el renderizador IronPDF HtmlToPdf
var renderer = new ChromePdfRenderer();
//  Convertir la página web de la URL codificada en un documento PDF
var pdf = renderer.RenderUrlAsPdf(fullUrl);
//  Guardar el PDF en un archivo
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://ejemplo.com/buscar";
//  El parámetro de consulta con espacios que debe codificarse
string query = "Hello World!";
//  Codificación del parámetro de consulta para garantizar el formato correcto de la URL
string encodedQuery = HttpUtility.UrlEncode(query);
//  Construcción de la URL completa con el parámetro de consulta codificado
string fullUrl = $"{baseUrl}?query={encodedQuery}";
//  Inicializar el renderizador IronPDF HtmlToPdf
var renderer = new ChromePdfRenderer();
//  Convertir la página web de la URL codificada en un documento PDF
var pdf = renderer.RenderUrlAsPdf(fullUrl);
//  Guardar el PDF en un archivo
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://ejemplo.com/buscar"
'  El parámetro de consulta con espacios que debe codificarse
Dim query As String = "Hello World!"
'  Codificación del parámetro de consulta para garantizar el formato correcto de la URL
Dim encodedQuery As String = HttpUtility.UrlEncode(query)
'  Construcción de la URL completa con el parámetro de consulta codificado
Dim fullUrl As String = $"{baseUrl}?query={encodedQuery}"
'  Inicializar el renderizador IronPDF HtmlToPdf
Dim renderer = New ChromePdfRenderer()
'  Convertir la página web de la URL codificada en un documento PDF
Dim pdf = renderer.RenderUrlAsPdf(fullUrl)
'  Guardar el PDF en un archivo
Dim filePath As String = "webpage.pdf"
pdf.SaveAs(filePath)
Console.WriteLine($"PDF successfully created from: {fullUrl}")
Console.WriteLine($"Saved to: {filePath}")
VB   C#

Codificación de URL en C# (Cómo funciona para desarrolladores): Figura 5 - Salida de la consola sobre el éxito de la conversión de URL a PDF

Explicación del Código

El ejemplo comienza con una URL base y una cadena de consulta que contiene espacios. La cadena de consulta se codifica utilizando HttpUtility.UrlEncode para garantizar que se transmite de forma segura en la URL. Después de codificar la consulta, se añade a la URL base para formar la URL completa a la que se accederá.

Con la URL completa y codificada, se utiliza el renderizador ChromePdfRenderer de IronPDF para obtener la página web en esa URL y convertirla en un documento PDF. Esto implica crear una instancia de la clase ChromePdfRenderer y luego llamar a RenderUrlAsPdf con la URL codificada. Por último, el PDF generado se guarda en un archivo mediante el método SaveAs. El archivo resultante es un documento PDF del contenido de la página web, accesible a través de la URL codificada. Este es el archivo PDF de salida:

Codificación de URL en C# (Cómo funciona para desarrolladores): Figura 6 - PDF resultante de la URL

Conclusión

Codificación de URL en C# (Cómo funciona para desarrolladores): Figura 7 - Página de licencias de IronPDF

En resumen, C# ofrece potentes funciones de codificación y descodificación de URL que garantizan la transmisión segura y eficaz de datos por Internet. Mediante los métodos incorporados en los espacios de nombres System.Web y System.Net, los desarrolladores pueden codificar las URL para evitar problemas con caracteres especiales y descodificarlas a su forma original para una interpretación precisa de los datos.

Para los interesados en explorar IronPDF lo que permite evaluar su funcionalidad de primera mano. Si decide integrar IronPDF en sus proyectos, las licencias cuestan a partir de $749 y ofrecen un completo conjunto de funciones para satisfacer sus necesidades de manipulación de PDF dentro del marco .NET.

< ANTERIOR
Pruebas unitarias en C# (cómo funcionan para los desarrolladores)
SIGUIENTE >
IndexOf C# (Cómo funciona para los desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123