Unterschied zwischen URL-Codierung und HTML-Codierung


83

Was ist der Unterschied zwischen einem URL-Code und einem HTML-Code ?


4
Wenn Sie zur Verwendung in einer URL codieren möchten, verwenden Sie die URL-Codierung. Wenn Sie für die Anzeige auf einer HTML-Seite codieren möchten, codieren Sie sie HTML
Mitch Wheat

3
URL-Codierung codiert Zeichen so, dass sie für URLs gültig sind. Zum Beispiel ?wird %3FHTML kodieren werden Zeichen codieren , so dass sie für HTML gültig sind. ZB <wird&lt;
Matt Ellen

Antworten:


81

Die HTML-Codierung entgeht Sonderzeichen in Zeichenfolgen, die in HTML-Dokumenten verwendet werden, um Verwechslungen mit HTML-Elementen wie Änderungen zu vermeiden

"<hello>world</hello>" 

zu

"&lt;hello&gt;world&lt;/hello&gt;"

Die URL-Codierung funktioniert für Zeichenfolgenwerte in einer URL ähnlich wie das Ändern

"hello+world = hello world"

zu

"hello%2Bworld+%3D+hello+world"

2
In der Praxis finde ich, dass HtmlEncode für beide Anwendungsszenarien weitaus umfassender ist. Wie @Mehrdad hervorhebt, fügt URLEncode Pluszeichen ein. Dies kann jedoch zu Problemen führen, wenn Sie beispielsweise URL-Zeichen verwenden. Die Verwendung von HtmlEncode auch für URLs ist also weitaus weniger problematisch. Ich habe noch nie ein Problem bei der Verwendung von HtmlEncode für URLs gefunden, aber bei der Verwendung von UrlEncode für URLs. Meiner Meinung nach ist UrlEncode meistens nutzlos.
Phill Healey

14
HTML-Codierung und URL-Codierung machen grundlegend verschiedene Dinge. Wenn Sie beispielsweise "Hallo Welt" in HTML codieren und versuchen, es einer URL hinzuzufügen, erhalten Sie eine ungültige URL. Beide sind wichtig und sollten für verschiedene Situationen verwendet werden.
Neil

1
Ich musste nur einige HtmlEncode-Verwendungen für die Codierung von URLs durch UrlEncoding, Probleme bei der Codierung von Leerzeichen und einige andere Sonderzeichen
ersetzen

Beachten Sie, dass die Verwendung von HtmlEncode anstelle von UrlEncode für URLs problematisch sein kann, da HtmlEncode "&" Zeichen in Ihre Zeichenfolge einfügt. Abhängig davon, was Ihr Webdienst, der die URL empfängt, erwartet, können einige zusätzliche "&" -Zeichen sehr problematisch sein. Wenn Ihr Webdienst beispielsweise erwartet, dass jedem Parameter in einer URL ein "&" -Zeichen vorangestellt wird, Sie jedoch HtmlEncode verwendet haben, der eine Reihe zusätzlicher "&" -Zeichen hinzugefügt hat, wird bei Ihrem Webdienst wahrscheinlich eine Fehlermeldung angezeigt versucht die URL zu interpretieren. Aus diesem Grund musste ich nur mehrere Verwendungen von HtmlEncode durch UrlEncode ersetzen.
jdnew18

2
Bitte hör nicht auf Phill. Ich finde es unmöglich zu glauben, dass er Abfragezeichenfolgen verwendet und moderne URLs mit HtmlEncode anstelle von UrlEncode erstellt. Zu sagen, UrlEncode sei größtenteils nutzlos, ist eines der absurdesten Dinge, die ich seit einiger Zeit auf dieser Website gesehen habe.
Nard Dog

23

urlEncode ersetzt Sonderzeichen durch Zeichen, die von Webbrowsern / Webservern zum Zwecke der Adressierung verstanden werden können ... daher URL. Zum Beispiel werden Leerzeichen durch% 20, '=% 27 usw. ersetzt.

Siehe diese Referenzen:

HtmlEncode ersetzt Sonderzeichen durch Zeichenfolgen, die von der HTML-Engine selbst erkannt werden, um den Inhalt der Seite zu rendern. Dinge wie & werden &amp; or < = &lt; > = &lt;verhindern, dass die HTML-Engine diese Zeichen als Teile des HTML-Markups interpretiert und sie daher so rendert, als ob sie es wären Saiten.

Siehe diese Referenz:


Tatsächlich ersetzt URLEncode Leerzeichen durch +, was in einigen Situationen ein Problem sein kann.
NetMage

13

Sowohl HTML als auch URLs sind im Wesentlichen sehr eingeschränkte Sprachen . Als Sprache fügen sie bestimmten Schlüsselwörtern oder Operatoren Bedeutung hinzu. Für beide Sprachen sind Schlüsselwörter jedoch fast immer einzelne Zeichen. Beispielsweise

  • HTML:> und <
  • URL: / und:

Bei der Verwendung jeder Sprache ist es jedoch möglich, diese Konstrukte auf eine Weise zu verwenden, die die Bedeutung der Sprache nicht sicherstellt. Zum Beispiel enthält dieser Beitrag ein> Zeichen. Ich möchte nicht, dass es als HTML interpretiert wird, sondern nur als Text.

Hier kommen die Methoden Encode und Decode ins Spiel. Diese Methoden nehmen jeweils eine Zeichenfolge und konvertieren alle Zeichen, die ansonsten als Schlüsselwörter behandelt würden, in eine maskierte Form, die nicht als Teil der Sprache interpretiert wird.

Beispiel: Wenn Sie> an HtmlEncode übergeben, wird & gt;


3

HTMLEncode und URLEncode behandeln ungültige Zeichen in HTML und URLs, genauer gesagt Zeichen, die speziell geschrieben werden müssen, um korrekt interpretiert zu werden. In HTML werden beispielsweise die Zeichen <und> verwendet, um Tags anzuzeigen. Wenn Sie also eine mathematische Formel schreiben möchten, etwa 1 + 1 <2 + 2, wird das '<' normalerweise als Anfang eines Tags interpretiert. HTMLEncoding verwandelt dieses Zeichen in "& lt;" Dies ist die codierte Darstellung des Vorzeichens. URLEncoding macht dasselbe, jedoch für URLs, bei denen die Sonderzeichen unterschiedlich sind, obwohl es einige Überlappungen gibt.


1

Ich weiß nicht, in welcher Sprache Sie arbeiten, aber das PHP- Handbuch bietet zum Beispiel gute Erklärungen.

URLEncode

Gibt eine Zeichenfolge zurück, in der alle nicht alphanumerischen Zeichen außer -_ enthalten sind. wurden durch ein Prozentzeichen (%) ersetzt, gefolgt von zwei hexadezimalen Ziffern und Leerzeichen, die als Pluszeichen (+) codiert sind. Es wird auf die gleiche Weise codiert, wie die aus einem WWW-Formular gesendeten Daten codiert werden, dh auf dieselbe Weise wie im Medientyp application / x-www-form-urlencoded. Dies unterscheidet sich von der »RFC 1738-Codierung (siehe rawurlencode ()) darin, dass Leerzeichen aus historischen Gründen als Pluszeichen (+) codiert werden.

Weiter lesen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.