Passer au contenu du pied de page
.NET AIDE

C# URL Encode (Comment ça fonctionne pour les développeurs)

Encodage d'URL et le décodage sont des techniques utilisées en C# pour garantir la transmission sécurisée des données dans les URL. En C#, ces opérations sont couramment rencontrées lors de la gestion d'applications web, d'appels d'API, ou de tout scénario où les données doivent être transmises sur Internet de manière sécurisée et fiable. Dans cet article, nous explorerons la méthode d'encodage d'URL et la bibliothèque IronPDF.

Encodage d'URL en C#

Lorsque vous encodez une URL, vous transformez ses caractères en une forme qui peut être envoyée en toute sécurité sur Internet, évitant ainsi tout malentendu. C'est parce que les URL ne peuvent être envoyées sur Internet qu'en utilisant le jeu de caractères ASCII. Les caractères qui ne font pas partie de cet ensemble, ou qui ont des significations spéciales dans les URL (comme les espaces, les esperluettes et les signes égal), doivent être représentés en utilisant l'encodage par pourcentage (par exemple, les espaces deviennent %20). C# fournit des méthodes intégrées pour accomplir cette tâche.

Décodage d'URL en C#

Le décodage d'URL transforme les caractères encodés pour revenir à leur état d'origine lors de leur arrivée à destination. C'est essentiel pour que l'application de réception comprenne correctement et traite les données comme prévu. Le décodage transforme les caractères encodés par pourcentage en leurs symboles originaux, rendant les données à nouveau lisibles et utilisables.

Méthodes d'encodage en C#

En C#, il existe plusieurs façons d'effectuer l'encodage d'URL, chacune adaptée à différents scénarios. Ces méthodes se trouvent principalement dans les espaces de noms System.Web et System.Net, offrant aux développeurs une flexibilité dans la manière dont ils encodent les URL. Voici un aperçu des méthodes disponibles :

  1. Méthode HttpUtility.UrlEncode (System.Web) : C'est peut-être la méthode la plus couramment utilisée pour l'encodage d'URL dans une application web. Elle convertit les caractères au format encodé par pourcentage, rendant la chaîne sûre pour la transmission sur l'URL. Elle est particulièrement utile dans les projets ASP.NET pour encoder les chaînes de requête et les paramètres de formulaire.
  2. Méthode HttpUtility.UrlPathEncode (System.Web) : Contrairement à UrlEncode, UrlPathEncode est spécialement conçue pour encoder la partie chemin d'une URL, en laissant intacte la chaîne de requête. Il est important de noter que cette méthode ne code pas l'intégralité de l'URL mais plutôt la partie chemin, assurant que la structure hiérarchique de l'URL est préservée.
  3. Méthode Uri.EscapeUriString (System) : Cette méthode est destinée à échapper les chaînes URI, en transformant tous les caractères non autorisés dans un URI en leurs équivalents encodés par pourcentage. Cependant, elle ne code pas certains caractères, comme la barre oblique (/) et le point d'interrogation (?), car ils sont considérés comme des caractères URI valides.
  4. Méthode Uri.EscapeDataString (System) : Cette méthode est conçue pour encoder une chaîne devant être utilisée dans la partie requête d'un URI. Elle encode tous les caractères sauf les caractères non réservés définis dans la RFC 3986. Elle est plus agressive que EscapeUriString, garantissant que les données sont encodées en toute sécurité pour la transmission dans les URL.

Comprenons les trois premières méthodes d'encodage comme décrit ci-dessus, et leur fonctionnement en comprenant leurs exemples de code.

Exemple de code de la méthode 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

Inclusion de l'espace de noms : L'espace de noms System.Web est inclus au début du code.

Chaîne d'origine : Nous définissons une variable de chaîne originalString contenant les caractères à encoder pour une transmission sécurisée dans une URL. Cela inclut des espaces et des signes de ponctuation qui pourraient potentiellement causer des problèmes s'ils étaient inclus dans une URL sans encodage.

Encodage : La méthode HttpUtility.UrlEncode est appelée avec originalString comme argument. Cette méthode traite la chaîne et renvoie une nouvelle chaîne où les caractères non sécurisés sont remplacés par leurs équivalents encodés par pourcentage. Par exemple, les espaces sont remplacés par %20.

Sortie : Enfin, le programme affiche à la console à la fois la chaîne d'origine et la chaîne encodée.

Encodage d'URL en C# (Comment ça fonctionne pour les développeurs) : Figure 1 - Sortie de la console montrant les chaînes originales et encodées

Exemple de code de la méthode 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

Équivalents entités de caractères dans l'encodage d'URL: Le processus montré transforme la valeur de chaîne d'un chemin d'URL, convertissant les espaces en leurs équivalents d'entité de caractère (%20) pour la compatibilité web. C'est crucial car les URL ne peuvent pas contenir d'espaces réels.

Valeur de chaîne et gestion des chaînes URL: La valeur de la variable originalPath est "/api/search/Hello World!", ce qui est un exemple typique de chaîne URL devant être encodée en raison de l'inclusion d'espaces.

Bien que cet exemple utilise une version spécifique de HttpUtility.UrlPathEncode sans surcharge de méthode, il est important de noter l'intention de conception de la méthode pour encoder les chemins URL. Les développeurs doivent être conscients des surcharges de méthode lorsqu'elles existent, car elles fournissent des moyens alternatifs d'utiliser une méthode, souvent en acceptant différents types d'entrée ou en fournissant des fonctionnalités supplémentaires.

Objet d'encodage et transformation de chaîne URL: L'objet d'encodage dans ce contexte est implicite dans l'opération de la méthode HttpUtility.UrlPathEncode, qui prend une URL de chaîne et renvoie sa forme encodée. Cette méthode garantit que la structure du chemin de l'URL reste intacte tout en encodant les caractères spéciaux à leurs représentations appropriées.

Sortie du chemin encodé: Le programme démontre la transformation du chemin original au chemin encodé. Il s'agit d'un exemple direct d'encodage d'une URL de chaîne pour l'adapter à la transmission web, abordant les problèmes potentiels que les espaces et autres caractères spéciaux pourraient introduire.

Encodage d'URL en C# (Comment ça fonctionne pour les développeurs) : Figure 2 - Sortie de la console montrant les chaînes originales et encodées

Exemple de code de la méthode 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 d'origine: La variable originalUri est initialisée avec une chaîne représentant un URI complet, y compris une chaîne de requête avec des espaces et des caractères spéciaux. Pour garantir que l'URI est correctement traité par les navigateurs web et les serveurs, ces caractères spéciaux doivent être 'échappés'.

Échapper l'URI : La méthode Uri.EscapeUriString est invoquée avec originalUri comme argument. Cette méthode scanne la chaîne URI et échappe les caractères qui ne sont pas autorisés ou pourraient causer des ambiguïtés dans un URI.

Sortie : Le programme affiche à la console à la fois l'URI d'origine et l'URI échappé.

Encodage d'URL en C# (Comment ça fonctionne pour les développeurs) : Figure 3 - Sortie de la console montrant les chaînes originales et encodées

IronPDF : Bibliothèque PDF en C#

Encodage d'URL en C# (Comment ça fonctionne pour les développeurs) : Figure 4 - Page web IronPDF

IronPDF est une bibliothèque PDF qui simplifie la création, l'édition et la manipulation de fichiers PDF dans les applications .NET. Conçu pour s'intégrer parfaitement avec C# et VB.NET, IronPDF offre aux développeurs les fonctions pour générer des PDF à partir de HTML ou directement à partir de texte. Que vous ayez besoin d'automatiser la génération de factures, de créer des rapports dynamiques, ou de gérer des documents dans un environnement .NET, IronPDF se distingue par sa facilité d'utilisation et son ensemble complet de fonctionnalités.

Le point culminant d'IronPDF est sa fonctionnalité de Conversion HTML en PDF, préservant vos mises en page et styles. Cela permet la création de PDF à partir de contenu web, parfait pour les rapports, les factures et la documentation. Les fichiers HTML, les URL, et les chaînes HTML peuvent être convertis en PDF facilement.

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

Exemple de code fonctionnant avec l'encodage d'URL

Dans l'exemple suivant, nous verrons comment utiliser IronPDF en conjonction avec l'encodage d'URL pour générer un PDF à partir d'une page web. Le scénario implique l'encodage d'une URL pour s'assurer qu'elle est correctement formatée pour les requêtes web, puis l'utilisation d'IronPDF pour convertir le contenu à cette URL en un document PDF.

Installer la bibliothèque IronPDF

Tout d'abord, assurez-vous d'avoir IronPDF installé dans votre projet. Si vous utilisez le Gestionnaire de Packages NuGet, vous pouvez l'installer en exécutant :

Install-Package IronPdf

Exemple de code

Maintenant, plongeons dans le code :

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

Encodage d'URL en C# (Comment ça fonctionne pour les développeurs) : Figure 5 - Sortie de la console sur le succès de la conversion de l'URL en PDF

Explication du Code

L'exemple commence par une URL de base et une chaîne de requête contenant des espaces. La chaîne de requête est encodée à l'aide de HttpUtility.UrlEncode pour s'assurer qu'elle est transmise en toute sécurité dans l'URL. Après avoir encodé la requête, elle est ajoutée à l'URL de base pour former l'URL complète qui sera accédée.

Avec l'URL complète et encodée prête, ChromePdfRenderer d'IronPDF est utilisé pour récupérer la page web à cette URL et la convertir en un document PDF. Cela implique de créer une instance de la classe ChromePdfRenderer puis d'appeler RenderUrlAsPdf avec l'URL encodée. Enfin, le PDF généré est sauvegardé dans un fichier à l'aide de la méthode SaveAs. Le fichier résultant est un document PDF du contenu de la page web, accessible via l'URL encodée. Voici le fichier PDF de sortie :

Encodage d'URL en C# (Comment ça fonctionne pour les développeurs) : Figure 6 - PDF généré à partir de l'URL

Conclusion

Encodage d'URL en C# (Comment ça fonctionne pour les développeurs) : Figure 7 - Page de licence IronPDF

Pour conclure, C# offre de puissantes capacités pour l'encodage et le décodage d'URL, garantissant que les données peuvent être transmises de manière sécurisée et efficace sur Internet. Grâce aux méthodes intégrées au sein des espaces de noms System.Web et System.Net, les développeurs peuvent encoder les URL pour éviter les problèmes avec les caractères spéciaux et les décoder à leur forme originale pour une interprétation précise des données.

Pour ceux intéressés par l'exploration des offres de licence d'essai d'IronPDF, elles offrent l'opportunité d'évaluer ses fonctionnalités de première main. Si vous décidez d'intégrer IronPDF dans vos projets, les licences commencent à $799, offrant un ensemble complet de fonctionnalités pour répondre à vos besoins de manipulation PDF dans le cadre .NET.

Questions Fréquemment Posées

Comment puis-je encoder une URL en C# ?

En C#, vous pouvez utiliser des méthodes comme HttpUtility.UrlEncode ou Uri.EscapeDataString pour encoder des URL. Ces méthodes convertissent les caractères en un format encodé par pourcentage pour garantir une transmission sécurisée sur Internet.

Quelle est la différence entre encodage et décodage d'URL ?

L'encodage d'URL transforme les caractères spéciaux en un format encodé par pourcentage pour garantir une transmission sécurisée des données dans les URL, tandis que le décodage convertit ces caractères encodés en leur forme originale pour une interprétation correcte des données.

Comment créer un PDF à partir d'une URL en C# ?

Vous pouvez utiliser IronPDF pour convertir une URL en PDF en C#. IronPDF vous permet de capturer le contenu d'une page web directement et de le convertir en un document PDF, intégrant des techniques d'encodage d'URL pour des requêtes web précises.

Pourquoi l'encodage d'URL est-il important dans les applications web ?

L'encodage d'URL est crucial dans les applications web car il garantit que les données transmises dans les URL le sont de manière sécurisée et sans erreurs. Il remplace les caractères non sécurisés par un format encodé par pourcentage, évitant ainsi une éventuelle corruption de données ou des problèmes de sécurité.

Comment l'encodage d'URL peut-il être utilisé pour améliorer la génération de PDF en C# ?

En appliquant l'encodage d'URL avant de générer des PDFs, vous pouvez vous assurer que les URL incluses dans le document sont correctement formatées et transmises en toute sécurité. Les bibliothèques comme IronPDF peuvent alors traiter précisément ces URL lors de la conversion de contenu web en PDFs.

Quelles méthodes sont disponibles pour le décodage d'URL en C# ?

C# offre des méthodes telles que HttpUtility.UrlDecode et Uri.UnescapeDataString pour le décodage d'URL. Ces méthodes inversent le processus d'encodage, convertissant les caractères encodés par pourcentage en leur forme originale.

Comment l'encodage d'URL facilite-t-il les appels d'API ?

L'encodage d'URL garantit que les caractères spéciaux au sein des paramètres de requête sont transmis en toute sécurité, empêchant ainsi les erreurs lors des appels d'API. Cela est essentiel pour transmettre les données de manière fiable entre le client et le serveur dans les applications web.

IronPDF peut-il gérer automatiquement l'encodage d'URL lors de la génération de PDFs ?

Oui, IronPDF peut gérer automatiquement l'encodage d'URL lors de la conversion de pages web en PDFs. Il garantit que les URL sont correctement formatées et traitées pendant le processus de génération de PDF, fournissant une intégration transparente avec le contenu web.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite