8

ウィキペディアがURLのパスセクションにパーセントエンコーディングを使用しているのに気づきましたが、%文字を.#fragmentに変換します。

たとえば、ロシア語の「ロシア」ページでは、セクション2(История)のURLは次のとおりです。

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

それ以外の

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

トークンは[A-Za-z]で始まる必要があるため、ID/名前に有効なHTML<5トークンもありません。HTML5は現在、スペース以外の任意の文字の少なくとも1つを使用できると述べています(したがって、エンコードする必要はまったくありません)が、ウィキペディアはHTML5ではありません。

では、なぜウィキペディアがこのスキームを使用したのでしょうか。

4

1 に答える 1

5

考えられる答えの1つは、クロスブラウザの問題です。ブラウザは、特にURLフラグメントを使用して、Unicodeを処理する方法に一貫性がありません。

たとえば、リンク付き

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

Browser      | Hover   | Location bar | href*   | path*
----------------------------------------------------------
Chrome 19    | Unicode | Unicode      | Percent | Percent
Firefox 13   | Unicode | Unicode      | Percent | Percent
IE 9         | Percent | Percent      | Percent | Percent

しかし、断片があります:

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

Browser      | Hover   | Location bar | href*   | hash*
----------------------------------------------------------
Chrome 19    | Percent | Percent      | Percent | Percent
Firefox 13   | Unicode | Unicode      | Percent | Unicode
IE 9         | Percent | Percent      | Percent | Percent

href =javascript:document.getElementById('foo').href

パス=javascript:location.pathnameリンクをたどった後

ハッシュ=javascript:location.hashリンクをたどった後

そのため、Firefoxは、ハッシュを要求したときにフラグメントのパーセントエンコードをUnicodeにデコードし、id/name属性の値と一致しないようにします。これはJavaScriptの問題にすぎないことに注意してください。次のリンクは正常に機能します。

于 2012-06-22T15:24:59.990 に答える