2012-06-22 20 views
8

Tôi nhận thấy rằng Wikipedia sử dụng mã hóa phần trăm cho phần đường dẫn của URL, nhưng chuyển đổi ký tự % thành . cho #fragment.Tại sao Wikipedia sử dụng mã hóa phần trăm được sửa đổi trong các đoạn URL của chúng?

Ví dụ, trên Russian 'Russia' page, URL cho section 2 (История)

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

thay vì

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

Không có giá trị HTML < 5 thẻ cho một id/tên như mã thông báo phải bắt đầu bằng [A-Za-z]. HTML5 currently states mà bạn có thể sử dụng ít nhất một trong bất kỳ ký tự nào ngoài không gian (vì vậy bạn không cần phải mã hóa chút nào), nhưng Wikipedia không phải là HTML5.

Vậy, tại sao Wikipedia sử dụng lược đồ này?

+0

Xin lỗi, đã đọc sai. –

Trả lời

5

Một câu trả lời có thể là các vấn đề liên quan đến trình duyệt. Trình duyệt không nhất quán trong cách chúng xử lý unicode, đặc biệt là với các đoạn URL.

Ví dụ, với các liên kết

<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 

nhưng với một đoạn:

<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

path = javascript:location.pathname sau khi làm theo link

hash = javascript:location.hash sau khi làm theo link

Vì vậy, Firefox sẽ giải mã phần trăm mã hóa của mảnh để unicode khi bạn yêu cầu băm, làm cho nó không phù hợp với id/tên giá trị của thuộc tính. Lưu ý, đây chỉ là một vấn đề trong JavaScript; các liên kết sau hoạt động tốt.