Warum verwendet Wikipedia eine modifizierte prozentuale Codierung in ihren URL-Fragmenten?

8

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?

    
Deebster 22.06.2012, 11:41
quelle

1 Antwort

5

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>

%Vor%

aber mit einem Fragment:

<a id="foo" href="#%D1%83%D0%BE%D0%BC%D0%B1%D0%BB%D1%8B">Уомблы</a>

%Vor%

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.

    
Deebster 22.06.2012, 15:24
quelle