<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Wikipedia%3ATechnik%2FSkin%2FJS%2FEncoding</id>
	<title>Wikipedia:Technik/Skin/JS/Encoding - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Wikipedia%3ATechnik%2FSkin%2FJS%2FEncoding"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Technik/Skin/JS/Encoding&amp;action=history"/>
	<updated>2026-05-22T23:31:49Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Technik/Skin/JS/Encoding&amp;diff=2859102&amp;oldid=prev</id>
		<title>imported&gt;PerfektesChaos: linkupdates etc.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Technik/Skin/JS/Encoding&amp;diff=2859102&amp;oldid=prev"/>
		<updated>2024-09-03T06:26:34Z</updated>

		<summary type="html">&lt;p&gt;linkupdates etc.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{../../../!header&lt;br /&gt;
|Text=Encoding für JavaScript}}&lt;br /&gt;
Diese Seite gibt Möglichkeiten an, wie im [[JavaScript]]-Code für Wiki-Projekte das [[URL-Encoding]] umgesetzt werden kann, also das Verbergen von Sonderzeichen sowie Schriftzeichen außerhalb des [[American Standard Code for Information Interchange|ASCII]]-Zeichensatzes. Neben der Hauptanwendung bei der Bildung von [[Uniform Resource Locator|URL]] gibt es auch andere Situationen, für die die Methoden genauso verwendet werden können und müssen. Das Verbergen der Zeichen wird auch als Maskieren oder Kodieren bezeichnet.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Situation und Sonderzeichen ==&lt;br /&gt;
Es gibt unterschiedliche Anforderungen an das Resultat des Vorgangs. Abhängig davon kommen unterschiedliche Funktionen in Frage; möglicherweise muss mit einem kleinen Eingriff nachgesteuert werden.&lt;br /&gt;
&lt;br /&gt;
* Sicherheit gegen böswillig untergeschobenen [[Schadprogramm|Schadcode]].&lt;br /&gt;
** Zu maskieren sind in URL vor allem: &amp;lt;code&amp;gt;&amp;#039; &amp;quot;&amp;lt;/code&amp;gt; und bei erhöhten Anforderungen auch &amp;lt;code&amp;gt;(&amp;amp;nbsp;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Bei generiertem HTML auch &amp;lt;code&amp;gt;&amp;amp;lt; &amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Funktionstüchtigkeit von URL, die freie Daten transportieren sollen.&lt;br /&gt;
** Insbesondere sind Leerzeichen, &amp;lt;code&amp;gt;# %&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; hinderlich.&lt;br /&gt;
* Lesbarkeit der produzierten URL.&lt;br /&gt;
** Oft wird gewünscht, bei allen notwendigen Maskierungen von Zeichen die URL so lesbar wie möglich zu halten.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, dass auf der kodierenden Seite nicht jede Form der Dekodierung unterstützt werden muss.&lt;br /&gt;
* Wo Webserver angesteuert werden, sind sie nicht verpflichtet, jede Form der „Prozentkodierung“ zu verstehen. Soweit Software für Server nach 2000 geschrieben wurde, wird ein breites Spektrum beherrscht. Teilweise wird aber für die Dekodierung des [[Hypertext Transfer Protocol#HTTP GET|HTTP&amp;amp;nbsp;GET]] nur ein eingeschränktes Repertoire unterstützt. Hinzu kommt, dass vor 2000 geschriebene Server-Software möglicherweise nur knapp 200 [[ISO 8859-1|8-Bit-ANSI-Zeichen]] erwartet, während heute umfassende [[UTF-8]]-Zeichen üblich sind.&lt;br /&gt;
* Leerzeichen können auf drei verschiedene Arten kodiert sein:&lt;br /&gt;
*# Als Pluszeichen &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; im traditionellen Query-Format,&lt;br /&gt;
*# als &amp;lt;code&amp;gt;%20&amp;lt;/code&amp;gt; bei der Prozentkodierung,&lt;br /&gt;
*# als &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; in der Wiki-Software.&lt;br /&gt;
* {{Anker|ANSI}} Zur Kodierung der ANSI-Zeichen von 160 bis 255 gibt es zwei verschiedene Techniken:&lt;br /&gt;
*# Als direkte Kodierung mit Prozentzeichen und zwei [[Oktett (Informatik)|Oktetts]].&lt;br /&gt;
*#* ü wird zu &amp;lt;code&amp;gt;%FC&amp;lt;/code&amp;gt; (252&amp;lt;sub&amp;gt;10&amp;lt;/sub&amp;gt;).&lt;br /&gt;
*# Als UTF-8-Kodierung.&lt;br /&gt;
*#* ü wird zu &amp;lt;code&amp;gt;%C3%BC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== {{Anker|encode}} Funktionen zur Kodierung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion !! Herkunft !! kodierte Sonderzeichen !! Resultat !! Leerzeichen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;escape(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
| JavaScript&amp;amp;nbsp;1.0&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;! &amp;quot; # $ % &amp;amp; &amp;#039; ( ) , : ; &amp;lt; = &amp;gt; ? [ \ ] ^ ` { | } ~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|style=&amp;quot;padding-left:0.5em&amp;quot;| ANSI; &amp;lt;code&amp;gt;ü&amp;lt;/code&amp;gt;→&amp;lt;code&amp;gt;%FC&amp;lt;/code&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot;| &amp;lt;code&amp;gt;%20&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;encodeURI(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| JavaScript&amp;amp;nbsp;1.5&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot; % &amp;lt; &amp;gt; [ \ ] ^ ` { | }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot; style=&amp;quot;padding-left:0.5em; padding-right:0.5em;&amp;quot;| UTF-8; &amp;lt;code&amp;gt;ü&amp;lt;/code&amp;gt;→&amp;lt;code&amp;gt;%C3%BC&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;encodeURIComponent(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot; # $ % &amp;amp; + , / : ; &amp;lt; = &amp;gt; ? @ [ \ ^ ` { | }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw#.util.rawurlencode()|mw.util.rawurlencode(s)]]&amp;lt;/code&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| &amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw|mediawiki.util]]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;! &amp;quot; # $ % &amp;amp; &amp;#039; ( ) * + , / : ; &amp;lt; = &amp;gt; ? @ [ \ ] ^ ` { | } ~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw#.util.wikiUrlencode()|mw.util.wikiUrlencode(s)]]&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw#.util.getUrl()|mw.util.getUrl(s)]]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot; # % &amp;amp; &amp;#039; + &amp;lt; = &amp;gt; ? [ \ ] ^ ` { | }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot;| &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;s.replace(re,ex)&amp;lt;/code&amp;gt;&lt;br /&gt;
| JavaScript&amp;amp;nbsp;1.2&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;| &amp;#039;&amp;#039;beliebig;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;re&amp;lt;/code&amp;gt;=[[Regulärer Ausdruck]], &amp;lt;code&amp;gt;ex&amp;lt;/code&amp;gt;=Austausch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw#.html.escape()|mw.html.escape(s)]]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw|mediawiki.html]]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt; &amp;gt; &amp;#039; &amp;amp; &amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Entitäten in Auszeichnungssprachen|HTML-Entity]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Hilfe:Parserfunktionen/Seite und URL#urlencode|{&amp;amp;#123;urlencode:}}]]&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;{&amp;amp;#123;urlencode:&amp;amp;#124;QUERY}}&amp;lt;/code&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;| Wiki-Parser&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;! &amp;quot; # $ % &amp;amp; &amp;#039; ( ) * + , / : ; &amp;lt; = &amp;gt; ? @ [ \ ^ ` { } ~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| UTF-8; &amp;lt;code&amp;gt;ü&amp;lt;/code&amp;gt;→&amp;lt;code&amp;gt;%C3%BC&amp;lt;/code&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot;| &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{&amp;amp;#123;urlencode:&amp;amp;#124;PATH}}&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;! &amp;quot; # $ % &amp;amp; &amp;#039; ( ) * + , / : ; &amp;lt; = &amp;gt; ? @ [ \ ^ ` { }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot;| &amp;lt;code&amp;gt;%20&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{&amp;amp;#123;urlencode:&amp;amp;#124;WIKI}}&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot; # % &amp;amp; &amp;#039; + &amp;lt; = &amp;gt; ? [ \ ^ ` {  } ~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot;| &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Hilfe:Parserfunktionen/Seite und URL#anchorencode|{&amp;amp;#123;anchorencode:}}]]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;! &amp;quot; # $ % &amp;amp; &amp;#039; ( ) * + , / ; &amp;lt; = &amp;gt; ? @ [ \ ^ ` { } ~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;#039;&amp;#039;historisch:&amp;#039;&amp;#039;&amp;lt;br /&amp;gt; UTF-8; &amp;lt;code&amp;gt;ü&amp;lt;/code&amp;gt;→&amp;lt;code&amp;gt;.C3.BC&amp;lt;/code&amp;gt;&lt;br /&gt;
|style=&amp;quot;text-align: center&amp;quot;| &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei steht &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; jeweils für die Ausgangs-Zeichenkette; das Ergebnis der Funktion ist jeweils die transformierte Zeichenkette.&lt;br /&gt;
&lt;br /&gt;
Individuell lässt sich jedes einzelne Zeichen wie folgt umkodieren; hier die Umwandlung aller Leerzeichen in Unterstreichungsstriche:&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; inline&amp;gt;s.replace( / /g, &amp;#039;_&amp;#039; )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== {{Anker|decode}} Funktionen zur Dekodierung ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion !! Herkunft !! Gegenstück !! Bemerkung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;unescape(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
| JavaScript&amp;amp;nbsp;1.0&lt;br /&gt;
| Nur &amp;lt;code&amp;gt;escape(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Kein UTF-8&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;decodeURI(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
| JavaScript&amp;amp;nbsp;1.5&lt;br /&gt;
| &amp;lt;code&amp;gt;encodeURI(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| Oft kein ANSI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;decodeURIComponent(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
| JavaScript&amp;amp;nbsp;1.5&lt;br /&gt;
| &amp;lt;code&amp;gt;encodeURIComponent(s)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw#.Title.getFragment()|mw.Title.getFragment(s)]]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;[[Wikipedia:Technik/Skin/JS/mw#.Title|mw.Title]]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;code&amp;gt;.3C&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;s.replace(re,ex)&amp;lt;/code&amp;gt;&lt;br /&gt;
| JavaScript&amp;amp;nbsp;1.2&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| &amp;#039;&amp;#039;beliebig;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;re&amp;lt;/code&amp;gt;=[[Regulärer Ausdruck]], &amp;lt;code&amp;gt;ex&amp;lt;/code&amp;gt;=Austausch&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Im Regelfall sollten diese Funktionen kein Pluszeichen in ein Leerzeichen umwandeln, weil das Gegenstück dies bei der Kodierung auch nicht macht.&lt;br /&gt;
&lt;br /&gt;
Die Funktionen mit &amp;#039;&amp;#039;decodeURI&amp;#039;&amp;#039; können meist sämtliche Prozentkodierungen in einfache Zeichen zurückwandeln, sofern es sich um UTF-8 handelt. ANSI-Kodierungen statt UTF-8 führen mitunter dazu, dass nicht nur nicht dekodiert wird, sondern die Funktion und dann das ganze Skript abstürzt.&lt;br /&gt;
&lt;br /&gt;
Bei einer unbekannt vorgefundenen URL weiß man nicht, welches Kodierungsverfahren angewendet wurde. Dann sollte sicherheitshalber die folgende Konstruktion benutzt werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
   s  =  decodeURIComponent(u);&lt;br /&gt;
} catch (e) {&lt;br /&gt;
   s  =  unescape(u);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Falls der erste Versuch („try“) einen fatalen Fehler auslöst, wird nicht gleich die gesamte Skript-Ausführung beendet, sondern es wird bei &amp;lt;code&amp;gt;catch&amp;lt;/code&amp;gt; weiter ausgeführt. Für &amp;lt;code&amp;gt;unescape()&amp;lt;/code&amp;gt; gibt es dann keine unzulässigen Kombinationen, und es ist kein Absturz zu befürchten.&lt;br /&gt;
&lt;br /&gt;
Die Dekodier-Funktionen können unterschiedlich intelligent ausfallen. In den meisten Fällen ist es von der Logik her unterscheidbar. Hat das erste Oktett-Zeichen einen Wert von 160 bis 191, muss es als ANSI kodiert sein. Liegt es zwischen 192 und 255, dann wäre es UTF-8, falls das folgende Zeichen auch Prozent-kodiert ist, und ANSI, wenn das nicht der Fall ist. Pfiffige Funktionen könnten also auch universell dekodieren.&lt;br /&gt;
&lt;br /&gt;
Individuell kann man hier wieder jedes einzelne Oktett oder Zeichen selbst umkodieren; hier beispielsweise die Rücktransformation aller Leerzeichen nach verschiedenen Methoden (die sich auch in einem einzigen regulären Ausdruck zusammenfassen ließen):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
s  =  u.replace( /%20/g, &amp;#039; &amp;#039; ).replace( /_/g, &amp;#039; &amp;#039; ).replace( /\+/g, &amp;#039; &amp;#039; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Kategorie:Wikipedia:Technik/Skin/JavaScript|Encoding]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;PerfektesChaos</name></author>
	</entry>
</feed>