2011-11-01 73 views
4

我檢查了我的網頁的HTML代碼,並使用Firefox's HTML Validator add-on進行了驗證,並且我看到它對鏈接的href屬性提出了投訴,該鏈接包含Unicode編碼的字符,而非URL編碼。是否需要編碼錨元素的「href」屬性的URL?

目前的網址是:

<a href='/اخبار'>Persian News</a> 

然而,驗證希望它是:

<a href='/%D8%A7%D8%AE%D8%A8%D8%A7%D8%B1'>Persian News</> 

我測試過的幾乎每一個瀏覽器這個鏈接(即使回到IE6)。它工作得很好。那麼,這裏有什麼問題?我爲什麼要編碼它?驗證器是否過時?在標籤的href屬性內可能遇到的不是URL編碼Unicode字符的問題?

回答

3

不支持該語言(編碼)的瀏覽器將無法打開該URL。您應該對其進行編碼以確保每個人都能夠使用您網站的所有功能。

+0

我認爲現在的IE6是最老的,最笨的瀏覽器。如果它支持鏈接,那麼驗證器可能已過時。 –

+0

如果您的系統不知道該語言,它可能會有所不同。你在MacOS和Linux上試過嗎?對於爬蟲和屏幕閱讀器來說也可能很尷尬。也許這會幫助你:http://en.wikipedia.org/wiki/Percent-encoding – dwalldorf

1

是的,我已經與 <meta http-equiv="Content-type" content="text/html; charset=windows-1251"/> 測試此,這意味着俄羅斯和鏈接只是把 <a href="/?????">Persian News</a> 所以你需要一個合適的字符集和編碼,使其正常工作。

+0

不明白你的意思。抱歉。 –

+0

查看更新的答案 –

+0

不是默認的'Content-Type'設置爲'utf-8'嗎?然後,只有當您將自己限制爲特定的字符集時,您才需要對其進行編碼。但是,幾乎沒有人使用俄語字符集來寫波斯語。他們只需使用阿拉伯語或波斯語字符集。 –

4

只能使用ASCII字符集通過Internet發送URL。

通常,瀏覽器會爲您編碼。

+0

另請參閱RFC2396(http://www.ietf.org/rfc/rfc2396.txt):「URI始終處於'轉義'形式」。在HTML5中,允許使用UTF-8。請參閱@Ixgr的答案 – koppor

0

這取決於你希望自己的網頁符合什麼標準:

  • 對於(X)HTML5,包含非ASCII字符(即IRIS)的URI是有效的,只要你的文檔以UTF-8或UTF-16編碼,並相應地發送MIME頭文件。

  • 在HTML4/XHTML1文檔中,所有非ASCII字符都必須經過轉義。

另請參閱對Are IRIs valid as HTML attribute values?的回答。

相關問題