2013-10-15 23 views
0

知道&是&的html實體值 - 像w3c這樣的驗證器如何知道這一點?即使當我查看我的源代碼時,它已經被解析爲正確的值。驗證器如何區分'&'和'&amp'?

+3

這不是一個ascii值,這是一個html實體。 –

+0

@ Co_42我想我不知道兩者之間的區別。 –

回答

1

你的問題是基於一個錯誤的前提 - 正如Co_42指出的,&不是'&'的「ASCII值」。這是一個代表字符'&'的HTML character reference'&'的ASCII值是38(或0x26)。

您的源代碼幾乎肯定由ASCII或Unicode文本文件組成。那些不使用HTML實體。如果您的源代碼中存儲了帶&符號的字符串,則可能會將其與"&"一起存儲。如果在某處存在包含實際HTML數據的字符串文字,它可能包含"&"

當您使用某種工具或函數將字符串轉換爲準備放入HTML或XML文檔的文本時,任何"&"都將(應當!)轉換爲"&"

當讀取HTML文檔的程序遇到ASCII "&"時,它可以認爲這是HTML字符引用的開始。這是可以的,因爲所有實際文本中的&符號應該已被轉換爲"&"

作爲一個有點反常例如,如果你在一個文字處理器中打開你的源代碼,並保存爲HTML文檔,你會發現,在實際的文件,"&"已被改造成"&"(和"&"已轉換到"&")。如果您然後在瀏覽器中打開該文檔,您會發現,在文本編輯器中查看源代碼時,它們的顯示方式與它們的顯示方式相同。保存HTML文檔時發生的編碼步驟與瀏覽器顯示時的解碼步驟相對應。

如果您將諸如"Fish & chips"之類的內容直接放入實際的HTML文檔中,您的HTML文檔將無效。使問題更復雜的是,瀏覽器等程序往往會嘗試從文檔中的錯誤中恢復並無論如何顯示文檔。因此,當您打開無效文檔時,您的瀏覽器仍可能在屏幕上顯示"Fish & chips"。但是,像W3C驗證程序這樣專門用於發現HTML文檔中的錯誤的程序會通知您,您的文檔無效。