.NET-HILFE

C# URL-Kodierung (Wie es für Entwickler funktioniert)

Einführung

URL-Codierung und -Decodierung sind Techniken, die in C# verwendet werden, um die sichere Übertragung von Daten innerhalb von URLs zu gewährleisten. In C# werden diese Operationen häufig bei Webanwendungen, API-Aufrufen oder anderen Szenarien verwendet, bei denen Daten sicher und zuverlässig über das Internet übertragen werden müssen. In diesem Artikel werden wir die URL-Codierungsmethode und die IronPDF-Bibliothek untersuchen.

URL-Kodierung in C#;

Wenn Sie eine URL kodieren, ändern Sie die Zeichen in eine Form, die sicher über das Internet gesendet werden kann, um Missverständnisse zu vermeiden. Der Grund dafür ist, dass URLs über das Internet nur mit dem ASCII-Zeichensatz gesendet werden können. Zeichen, die nicht Teil dieses Satzes sind oder in URLs spezielle Bedeutungen haben (wie Leerzeichen, Und-Zeichen und Gleichheitszeichen), müssen durch Prozentcodierung dargestellt werden (z. B. werden Leerzeichen zu %20). C# bietet integrierte Methoden zur Bewältigung dieser Aufgabe.

URL-Dekodierung in C#;

Bei der URL-Dekodierung werden kodierte Zeichen bei der Ankunft am Zielort in ihren ursprünglichen Zustand zurückverwandelt. Nur so kann die empfangende Anwendung die Daten richtig verstehen und wie vorgesehen verarbeiten. Bei der Dekodierung werden die prozentual kodierten Zeichen in ihre ursprünglichen Symbole zurückverwandelt, wodurch die Daten wieder lesbar und nutzbar werden.

Kodierungsmethoden in C##

In C# gibt es mehrere Möglichkeiten, die URL-Kodierung durchzuführen, die jeweils für unterschiedliche Szenarien geeignet sind. Diese Methoden sind hauptsächlich in den System.Web- und System.Net-Namespaces zu finden und bieten Entwicklern Flexibilität bei der URL-Kodierung. Im Folgenden finden Sie einen kurzen Überblick über die verfügbaren Methoden:

  1. HttpUtility.UrlEncode-Methode (System.Web): Dies ist möglicherweise die am häufigsten verwendete Methode für die URL-Codierung in einer Webanwendung. Er wandelt die Zeichen in ein prozentual kodiertes Format um, so dass die Zeichenfolge für die Übertragung über die URL sicher ist. Es ist besonders nützlich in ASP.NET-Projekten für die Codierung von Abfragezeichenfolgen und Formularparametern.

  2. HttpUtility.UrlPathEncode-Methode (System.Web): Im Gegensatz zu UrlEncode ist UrlPathEncode speziell dafür konzipiert, den Pfad-Teil einer URL zu kodieren, während die Abfragezeichenfolge unberührt bleibt. Es ist wichtig zu beachten, dass bei dieser Methode nicht die gesamte URL kodiert wird, sondern nur der Pfadteil, damit die hierarchische Struktur der URL erhalten bleibt.

  3. Uri.EscapeUriString-Methode (System): Diese Methode dient dazu, URI-Strings zu maskieren, indem alle Zeichen, die in einem URI nicht erlaubt sind, in ihre prozentcodierten Entsprechungen umgewandelt werden. Allerdings kodiert es bestimmte Zeichen nicht, wie den Schrägstrich (/) und das Fragezeichen (?), da sie als gültige URI-Zeichen betrachtet werden.

  4. Uri.EscapeDataString-Methode (System): Diese Methode dient zum Codieren eines Strings, der in einem Abfrageteil einer URI verwendet werden soll. Es codiert alle Zeichen, mit Ausnahme der nicht reservierten Zeichen, die in RFC 3986 definiert sind. Es ist aggressiver als EscapeUriString und stellt sicher, dass die Daten sicher zur Übertragung innerhalb von URLs codiert sind.

    Lassen Sie uns die ersten drei Kodierungsmethoden, wie oben beschrieben, und ihre Funktionsweise anhand von Codebeispielen verstehen.

Codebeispiel für die Methode 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

Namensraum-Einbeziehung: Der System.Web-Namensraum wird am Anfang des Codes eingebunden.

Original String: Wir definieren eine Zeichenfolgenvariable originalString, die die zu codierenden Zeichen für die sichere Übertragung in einer URL enthält. Dazu gehören auch Leerzeichen und Satzzeichen, die möglicherweise Probleme verursachen könnten, wenn sie ohne Kodierung in einer URL enthalten sind.

Encoding: Die Methode HttpUtility.UrlEncode wird mit originalString als Argument aufgerufen. Diese Methode verarbeitet die Zeichenkette und gibt eine neue Zeichenkette zurück, in der unsichere Zeichen durch ihre prozentual kodierten Entsprechungen ersetzt werden. Zum Beispiel werden Leerzeichen durch %20 ersetzt.

Ausgabe: Schließlich gibt das Programm sowohl die ursprünglichen als auch die kodierten Zeichenfolgen auf der Konsole aus.

C# URL-Kodierung (Wie es für Entwickler funktioniert): Abbildung 1 - Konsolenausgabe, die die ursprünglichen und kodierten Zeichenfolgen zeigt

Codebeispiel für die Methode 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

Zeichenentität-Entsprechungen in der URL-Codierung: Der gezeigte Prozess wandelt den Zeichenwert eines URL-Pfads um und konvertiert Leerzeichen in ihre Zeichenentität-Entsprechungen (%20) für Webkompatibilität. Dies ist wichtig, da URLs keine Leerzeichen enthalten dürfen.

String-Wert und URL-String-Verarbeitung: Der String-Wert der Variable originalPath ist "/api/search/Hello World!", was ein typisches Beispiel für einen URL-String ist, der aufgrund der Verwendung von Leerzeichen kodiert werden muss.

Obwohl dieses Beispiel eine spezifische Version von HttpUtility.UrlPathEncode ohne Methodenüberladungen verwendet, ist es wichtig, die Designabsicht der Methode zur Codierung von URL-Pfaden zu beachten. Entwickler sollten sich über Methodenüberladungen bewusst sein, wenn es sie gibt, da sie alternative Möglichkeiten zur Verwendung einer Methode bieten, indem sie oft andere Arten von Eingaben akzeptieren oder zusätzliche Funktionen bieten.

Kodierungsobjekt und URL-String-Transformation: Das Kodierungsobjekt in diesem Kontext ist implizit in der Funktionsweise der HttpUtility.UrlPathEncode-Methode, die eine String-URL entgegennimmt und ihre kodierte Form zurückgibt. Diese Methode stellt sicher, dass die Struktur des URL-Pfads intakt bleibt, während Sonderzeichen in ihrer entsprechenden Darstellung kodiert werden.

Verschlüsselter Pfadausgabe: Das Programm zeigt die Umwandlung vom ursprünglichen Pfad zum verschlüsselten Pfad. Dies ist ein direktes Beispiel für die Kodierung einer URL-Zeichenkette, um sie für die Web-Übertragung anzupassen, wobei die potenziellen Probleme, die Leerzeichen und andere Sonderzeichen mit sich bringen können, berücksichtigt werden.

C# URL Encode (Wie es für Entwickler funktioniert): Abbildung 2 - Konsolenausgabe, die die originalen und kodierten Zeichenfolgen zeigt

Codebeispiel für die Methode 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

Original-URI: Die Variable originalUri wird mit einem String initialisiert, der eine vollständige URI darstellt, einschließlich einer Abfragezeichenfolge mit Leerzeichen und Sonderzeichen. Um sicherzustellen, dass der URI von Webbrowsern und Servern korrekt verarbeitet wird, müssen diese Sonderzeichen "escaped" werden.

Entkommen der URI: Die Methode Uri.EscapeUriString wird mit originalUri als Argument aufgerufen. Mit dieser Methode wird die URI-Zeichenfolge gescannt und Zeichen, die nicht zulässig sind oder zu Mehrdeutigkeit in einem URI führen könnten, werden umgangen.

Ausgabe: Das Programm druckt sowohl die originale als auch die maskierte URI in die Konsole.

C# URL-Kodierung (Wie es für Entwickler funktioniert): Abbildung 3 - Konsolenausgabe, die die ursprünglichen und kodierten Zeichenfolgen zeigt

IronPDF: C# PDF-Bibliothek

C# URL-Kodierung (Wie es für Entwickler funktioniert): Abbildung 4 - IronPDF-Webseite

IronPDF ist eine PDF-Bibliothek, die das Erstellen, Bearbeiten und Verwalten von PDF-Dateien innerhalb von .NET-Anwendungen vereinfacht. IronPDF ist so konzipiert, dass es nahtlos in C# und VB.NET integriert werden kann und bietet Entwicklern die Funktionen, um PDFs aus HTML zu generieren oder direkt aus Text. Ganz gleich, ob Sie die Rechnungserstellung automatisieren, dynamische Berichte erstellen oder Dokumente in einer .NET-Umgebung verwalten möchten, IronPDF zeichnet sich durch seine Benutzerfreundlichkeit und seinen umfassenden Funktionsumfang aus.

Das Highlight von IronPDF ist seine HTML-zu-PDF-Konvertierungsfunktion, bei der Layouts und Stile beibehalten werden. Dies ermöglicht die Erstellung von PDF-Dateien aus Web-Inhalten, die sich ideal für Berichte, Rechnungen und Dokumentationen eignen. HTML-Dateien, URLs und HTML-Strings können problemlos in PDFs umgewandelt werden.

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

Arbeitscodebeispiel mit URL-Kodierung

Im folgenden Beispiel wird gezeigt, wie IronPDF in Verbindung mit der URL-Kodierung verwendet werden kann, um eine PDF-Datei aus einer Webseite zu erzeugen. Das Szenario beinhaltet die Kodierung einer URL, um sicherzustellen, dass sie für Webanfragen korrekt formatiert ist, und dann die Verwendung von IronPDF, um den Inhalt dieser URL in ein PDF-Dokument zu konvertieren.

IronPDF-Bibliothek installieren

Stellen Sie zunächst sicher, dass Sie IronPDF in Ihrem Projekt installiert haben. Wenn Sie den NuGet Package Manager verwenden, können Sie es installieren, indem Sie

Install-Package IronPdf

Code-Beispiel

Kommen wir nun zum Code:

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}")
$vbLabelText   $csharpLabel

C# URL-Codierung (Wie es für Entwickler funktioniert): Abbildung 5 - Konsolenausgabe bei erfolgreicher Umwandlung von URL in PDF

Erläuterung des Kodex

Das Beispiel beginnt mit einer Basis-URL und einem Abfrage-String, der Leerzeichen enthält. Die Abfragezeichenfolge wird mit HttpUtility.UrlEncode kodiert, um sicherzustellen, dass sie sicher in der URL übertragen wird. Nach der Kodierung der Abfrage wird sie an die Basis-URL angehängt, um die vollständige URL zu bilden, auf die zugegriffen werden soll.

Mit der vollständig kodierten URL einsatzbereit, wird das ChromePdfRenderer von IronPDF verwendet, um die Webseite an dieser URL abzurufen und in ein PDF-Dokument zu konvertieren. Dies beinhaltet das Erstellen einer Instanz der ChromePdfRenderer-Klasse und dann den Aufruf von RenderUrlAsPdf mit der kodierten URL. Schließlich wird das generierte PDF mithilfe der SaveAs-Methode in einer Datei gespeichert. Die resultierende Datei ist ein PDF-Dokument des Webseiteninhalts, das über die kodierte URL zugänglich ist. Hier ist die ausgegebene PDF-Datei:

C# URL-Codierung (Wie es für Entwickler funktioniert): Abbildung 6 - Ausgegebenes PDF von der URL

Schlussfolgerung

C# URL Kodierung (Wie es für Entwickler funktioniert): Abbildung 7 - IronPDF-Lizenzseite

Zusammenfassend lässt sich sagen, dass C# leistungsstarke Funktionen für die Kodierung und Dekodierung von URLs bietet, die eine sichere und effiziente Übertragung von Daten über das Internet ermöglichen. Mithilfe der integrierten Methoden in den Namespaces System.Web und System.Net können Entwickler URLs kodieren, um Probleme mit Sonderzeichen zu vermeiden, und sie in ihrer ursprünglichen Form dekodieren, um eine genaue Dateninterpretation zu ermöglichen.

Für diejenigen, die daran interessiert sind, die IronPDF Trial License Offerings zu erkunden, steht diese Option zur Verfügung und bietet die Möglichkeit, die Funktionalität aus erster Hand zu bewerten. Falls Sie sich entscheiden, IronPDF in Ihre Projekte zu integrieren, beginnen die Lizenzen bei $749 und bieten eine umfassende Suite von Funktionen, um Ihre Anforderungen an die PDF-Manipulation innerhalb des .NET-Frameworks zu erfüllen.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
C# Unit Testing (Wie es für Entwickler funktioniert)
NÄCHSTES >
IndexOf C# (Wie es für Entwickler funktioniert)