Ich habe bemerkt, dass Wikipedia die prozentuale Codierung für den Pfadabschnitt einer URL verwendet, aber das %
-Zeichen in .
für das #fragment konvertiert.
Zum Beispiel auf der Russische Seite 'Russland' , die URL für Abschnitt 2 (История) ist
http://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F#.D0.98.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F
statt
http://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F#%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F
Es gibt auch keine gültigen HTML & lt; 5 Tokens für eine ID / einen Namen, da das Token mit [A-Za-z] beginnen muss. HTML5 gibt zur Zeit an, dass Sie verwenden können mindestens eines der Zeichen außer dem Leerzeichen (also müssen Sie überhaupt nicht kodieren), aber Wikipedia ist nicht HTML5.
Also, warum hat Wikipedia dieses Schema benutzt?
Eine mögliche Antwort sind Cross-Browser-Probleme. Browser sind inkonsistent in der Behandlung von Unicode, insbesondere bei URL-Fragmenten.
Zum Beispiel mit dem Link
<a id="foo" href="%D1%83%D0%BE%D0%BC%D0%B1%D0%BB%D1%8B">Уомблы</a>
aber mit einem Fragment:
<a id="foo" href="#%D1%83%D0%BE%D0%BC%D0%B1%D0%BB%D1%8B">Уомблы</a>
href = javascript:document.getElementById('foo').href
Pfad = javascript:location.pathname
nach dem folgenden Link
hash = javascript:location.hash
nach dem folgenden Link
So wird Firefox die prozentuale Codierung des Fragments in Unicode dekodieren, wenn Sie nach dem Hash fragen, was dazu führt, dass er nicht mit dem Wert des ID / Name-Attributs übereinstimmt. Beachten Sie, das ist nur ein Problem in JavaScript. folgende Links funktionieren gut.
Tags und Links url percent-encoding fragment-identifier url-design