2012-06-22 11 views
8

Wikipedia'nın bir URL'nin yol bölümü için yüzde kodlamasını kullandığını fark ettim, ancak # fragment içinkarakterini . dönüştürür.Wikipedia, neden URL parçalarında değiştirilmiş bir yüzde kodlaması kullanıyor?

Örneğin, Russian 'Russia' page üzerine, section 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

yerine

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

olduğu ne gibi bir kimliği/adı için geçerli HTML < 5 jetonladır jeton [A-Za-z] ile başlamalıdır. HTML5 currently states, boşluktan başka herhangi bir karakterden en az birini kullanabildiğinizden (bu nedenle kodlama yapmanız gerekmez), ancak Wikipedia HTML5 değildir.

Peki, neden Wikipedia bu şemayı kullandı?

+0

Özür dilerim, yanlış okumuş. –

cevap

5

Muhtemel bir cevap, tarayıcılar arası sorunlardır. Tarayıcılar, özellikle URL parçaları ile unicode'u nasıl işledikleri konusunda tutarsızdır. bir fragmanı ile bağlantılı

<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 

fakat Örneğin

:

<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

.210

yol = javascript:location.pathname Eğer karma isterken

Yani Firefox yeniden kimliği/adı eşleşmiyor neden unicode için veridiliminin yüzde kodlamasını deşifre edecek bağlantıyı

izledikten sonra bağlantı

karma = javascript:location.hash izledikten sonra özniteliğin değeri. Not, bu sadece JavaScript’deki bir sorundur; aşağıdaki linkler iyi çalışıyor.