URL-Codierung in C#
-
Verwenden Sie einfaches
ASCII
, um Zeichen inC#
zu kodieren -
Verschiedene URL-Encoding-Optionen in
C#
-
Andere Codierungsfunktionen, die in
System.Web
inC#
vorhanden sind -
Verwenden Sie
Uri.HexEscape()
, um einzelne Zeichen in einem String inC#
zu ändern -
Verwenden Sie Temboo, um die URL in
C#
zu codieren - Abschluss
In diesem Artikel wird erläutert, wie eine URL in C# codiert wird.
Verwenden Sie einfaches ASCII
, um Zeichen in C#
zu kodieren
Es repräsentiert den DEZIMAL
-Wert jedes Zeichens auf der Tastatur. Daher kann dieser DEZIMAL
-Wert für eines der Zeichen in einer Zeichenfolge ersetzt und dann effizient codiert werden.
using System;
class Program {
static void Main(string[] args) {
string s = "DelftStack";
string ascii_convert = "";
foreach (char c in s) {
ascii_convert += System.Convert.ToInt32(c);
}
Console.WriteLine("The converted ascii string is: " + ascii_convert);
}
}
Beachten Sie, dass System.Convert.ToInt32()
dazu neigt, die DECIMAL
-Darstellung eines Zeichens in einer Zeichenfolge darzustellen. Sobald das Zeichen konvertiert ist, wird sein Wert an die neue Zeichenfolge ASCII_CONVERT
angehängt, die nun die codierte Zeichenfolge darstellt.
Anstatt DEZIMAL
zu verwenden, können Sie sogar BINÄR
, OKTAL
oder HEXADEZIMAL
für Ihre Codierungsanforderungen auswählen.
Verschiedene URL-Encoding-Optionen in C#
In C# können wir eine Vielzahl von Codierungsfunktionen verwenden. Viele wandeln Zeichen in verschiedene Schreibweisen um, wie z. B. URL
, URI
, HEX
usw.
Lassen Sie uns weitermachen und eine Funktion schreiben, um eine einfache URL in diese verschiedenen Notationen umzuwandeln.
Fügen Sie zuerst den Namensraum System.Web
zu unserer Codedatei hinzu. Rufen Sie dann die Funktion auf, um die Zeichenfolge in das URL-Format zu codieren, das das /, ., "
in der Zeichenfolge in ihre ASCII (hexadezimal)
-Darstellung umwandelt.
using System;
using System.Web;
class Program {
static void Main(string[] args) {
Console.WriteLine(HttpUtility.UrlEncode("https://www.google.com"));
}
}
Ausgang:
https%3a%2f%2fwww.google.com
Oft führt eine solche Darstellung zu Problemen bei der Erkennung durch andere Systeme. Es wird empfohlen, darauf zu achten, nur nicht so wichtige Informationen zu codieren.
Im obigen Beispiel möchten wir, dass Google immer zugänglich ist. Eine Darstellung in einem anderen Format kann diese jedoch ungültig und unkenntlich machen.
Daher ist es notwendig, die Codierung auf Begriffe aufzurufen, die zur URL gehören, aber benutzerspezifisch sind. Nehmen wir nun an, ich suche bei Google nach Welt
.
Die URL würde werden:
https://www.google.com/search?q=World
Das q
steht hier für Query. Verwenden Sie den folgenden Code, um ihn zu codieren.
Beispielcode:
using System;
using System.Web;
class Program {
static void Main(string[] args) {
Console.WriteLine("https://www.google.com/search" + HttpUtility.UrlEncode("?q=World"));
}
}
Ausgang:
https://www.google.com/search%3fq%3dWorld
Andere Codierungsfunktionen, die in System.Web
in C#
vorhanden sind
Beispielcode:
using System;
using System.Web;
class Program {
static void Main(string[] args) {
Console.WriteLine("URL ENCODE UNICODE: " +
HttpUtility.UrlEncodeUnicode("https://www.google.com/search?q=World"));
Console.WriteLine("URL PATH ENCODE: " +
HttpUtility.UrlPathEncode("https://www.google.com/search?q=World"));
Console.WriteLine("URI ESCAPE DATASTRING: " +
Uri.EscapeDataString("https://www.google.com/search?q=World"));
Console.WriteLine("URL ESCAPE URI STRING: " +
Uri.EscapeUriString("https://www.google.com/search?q=World"));
Console.WriteLine("HTML ENCODE: " +
HttpUtility.HtmlEncode("https://www.google.com/search?q=World"));
Console.WriteLine("HTML ATTRIBUTE ENCODE: " +
HttpUtility.HtmlAttributeEncode("https://www.google.com/search?q=World"));
}
}
Ausgang:
URL ENCODE UNICODE: https%3a%2f%2fwww.google.com%2fsearch%3fq%3dWorld
URL PATH ENCODE: https://www.google.com/search?q=World
URI ESCAPE DATASTRING: https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DWorld
URL ESCAPE URI STRING: https://www.google.com/search?q=World
HTML ENCODE: https://www.google.com/search?q=World
HTML ATTRIBUTE ENCODE: https://www.google.com/search?q=World
Beachten Sie, dass HttpUtility.UrlPathEncode()
, Uri.EscapeUriString()
, HttpUtility.HtmlEncode()
und HttpUtility.HtmlAttributeEncode()
tendenziell die gleichen Ergebnisse liefern wie die uncodierte Zeichenfolge.
Verwenden Sie Uri.HexEscape()
, um einzelne Zeichen in einem String in C#
zu ändern
Lassen Sie uns eine Funktion erstellen, um Zeichen in einer URL-Zeichenfolge in C# nach dem Zufallsprinzip zu ändern und dann die codierte Zeichenfolge zurückzugeben.
static string encoded_url(string param) {
Random rd = new Random();
int rand_num = rd.Next(0, param.Length - 1);
param = param.Remove(rand_num, 1);
param = param.Insert(rand_num, Uri.HexEscape(param[rand_num]));
return param;
}
Rufen Sie die in der Hauptsache wie folgt auf.
Console.WriteLine("URI HEX ESCAPE for 'GOOGLE', called at 1: " +
encoded_url("https://www.google.com/search?q=World"));
Console.WriteLine("URI HEX ESCAPE for 'GOOGLE', called at 2: " +
encoded_url("https://www.google.com/search?q=World"));
Console.WriteLine("URI HEX ESCAPE for 'GOOGLE', called at 3: " +
encoded_url("https://www.google.com/search?q=World"));
Vollständiger Quellcode:
using System;
using System.Web;
class Program {
static string encoded_url(string param) {
Random rd = new Random();
int rand_num = rd.Next(0, param.Length - 1);
param = param.Remove(rand_num, 1); /// returning the
param = param.Insert(rand_num, Uri.HexEscape(param[rand_num]));
return param;
}
static void Main(string[] args) {
// string s = Console.ReadLine();
// string ascii_convert = "";
// foreach (char c in s)
//{
// ascii_convert += System.Convert.ToInt32(c);
// }
// Console.WriteLine("The converted ascii string is: " + ascii_convert);
// Console.ReadKey();
Console.WriteLine("URI HEX ESCAPE for 'GOOGLE', called at 1: " +
encoded_url("https://www.google.com/search?q=World"));
Console.WriteLine("URI HEX ESCAPE for 'GOOGLE', called at 2: " +
encoded_url("https://www.google.com/search?q=World"));
Console.WriteLine("URI HEX ESCAPE for 'GOOGLE', called at 3: " +
encoded_url("https://www.google.com/search?q=World"));
}
}
Ausgang:
URI HEX ESCAPE for 'GOOGLE', called at 1: https://www.%6Foogle.com/search?q=World
URI HEX ESCAPE for 'GOOGLE', called at 2: https://www.go%67gle.com/search?q=World
URI HEX ESCAPE for 'GOOGLE', called at 3: https://www.google%63com/search?q=World
Sehen Sie, wie Zeichen an zufälligen Positionen in ihre HEX
-Darstellungen umgewandelt werden. Sie können diese URI.HexEscape()
-Funktion auch in einer Schleife verwenden, um den gesamten String oder die gewünschten Zeichen zu ändern.
URLENCODE
bleibt am besten für die Browserkompatibilität und -nutzung. Um die Verwendung von URI
und HTTPUTILITY
zu verdeutlichen, denken Sie außerdem daran, dass URI
von der SYSTEM
-Klasse geerbt wird, die bereits im Client-C#-Code vorhanden ist.
Wenn Sie nicht SYSTEM.WEB
verwenden, verwenden Sie besser URI
und rufen dann die Verschlüsselungsfunktionen auf.
Die Verwendung von SYSTEM.WEB
als Namensraum sollte jedoch in vielen Fällen keine Probleme bereiten. Falls Ihr Projekt in .NET FRAMEWORK CLIENT PROFILE
kompiliert ist, können Sie nicht viel tun, außer die Codedateien in ein neues Projekt zu kopieren.
Das .NET FRAMEWORK CLIENT PROFILE
kann SYSTEM.WEB
. Bei der Benennung von SYSTEM.WEB
muss das einfache .NET FRAMEWORK 4
verwendet werden.
Verwenden Sie Temboo, um die URL in C#
zu codieren
Eine API namens TEMBOO neigt dazu, eine URL perfekt zu codieren.
Beispielcode:
// the NAMESPACES TO USE BEFORE UTILIZING THEIR CODE
using Temboo.Core;
using Temboo.Library.Utilities.Encoding;
TembooSession session = new TembooSession("ACCOUNT_NAME", "APP_NAME", "APP_KEY");
URLEncode urlEncodeChoreo = new URLEncode(session);
urlEncodeChoreo.setText("https://www.google.com/search?q=");
URLEncodeResultSet urlEncodeResults = urlEncodeChoreo.execute();
Console.WriteLine(urlEncodeResults.URLEncodedText);
Abschluss
Stellen Sie beim Codieren sicher, dass unzulässige Zeichen konvertiert werden. Wenn Sie dies nicht tun, wechseln Sie zur ersten Lösung und erstellen Sie eine gemischte Funktion, die mithilfe von SWITCH
-Fällen bestimmt, welche Teile codiert werden und welche nicht.
Am Ende ist die Codierung Sache des Benutzers. Eine Funktion, die illegale Zeichen und ASCII-Zeichen umschalten könnte, würde einen ähnlichen Decoder am anderen Ende benötigen.
Daher ist es am besten, es in einem System mit einem globalen Encoder/Decoder für URL/Strings zu verwenden.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub