2012-01-31 93 views
47

下面的URL的行爲有什麼區別。什麼是&amp用於

我不知道爲什麼&被插入,它有什麼區別嗎?

www.testurl.com/test?param1=test&current=true 

www.testurl.com/test?param1=test&current=true 
+0

「行爲」? – 2012-01-31 17:40:22

+0

相關:[我真的需要編碼爲amp?](http://stackoverflow.com/questions/3493405/do-i-really-need-to-encode-as-amp) – cspray 2012-01-31 17:41:00

+0

你可以給一個上下文嗎?這是表單行爲嗎?剛剛顯示在一個頁面上? – jprofitt 2012-01-31 17:41:11

回答

58

&是HTML爲 「字符引用的開始」。

&是「和號」的字符引用。

&current;不是標準字符引用,所以是錯誤(瀏覽器可能嘗試執行錯誤恢復,但不應該依賴於此)。

如果您對真實字符使用了字符引用(例如™),那麼它(™)將出現在URL中,而不是您想要的字符串中。

(請注意,根據您使用的HTML版本,你可能要結束與;一個字符引用,這就是爲什麼&trade=會™處理。HTML 4允許如果接下來的文字是它被中省略一個非單詞字符(如=),但某些瀏覽器(Hello Internet Explorer)有此問題)。

1

我的資料來源:http://htmlhelp.com/tools/validator/problems.html#amp

當包含一個包含和號(「&」)的URL時出現另一個常見錯誤:

這是無效:

A HREF = 「foo.cgi章= 1個&部= 2 &拷貝= 3 &郎=恩?」

說明:

本示例爲「未知實體部分」生成錯誤,因爲 "&"是ass馬上開始實體參考。瀏覽器經常會從這種錯誤中安全地恢復,但實際問題確實發生在 的某些情況下。在此示例中,許多瀏覽器正確地將& copy = 3 轉換爲©= 3,這可能會導致鏈接失敗。由於⟨是用於左指向尖括號的HTML 實體,因此某些瀏覽器也會將 & lang = en轉換爲<= en。並且一箇舊的瀏覽器甚至發現實體§, 將& section = 2轉換爲§ion= 2。

因此,這裏的目標是在您嘗試驗證您的網站時避免出現問題。因此,在標記中寫入URL時,應該用&amp;替代您的&符號。

請注意,將&替換爲&amp;僅在編寫URL爲 HTML時完成,其中"&"是一個特殊字符(以及「<」和「>」)。當 在純文本電子郵件中或在瀏覽器的 欄中寫入相同的URL時,可以使用"&"而不是"&amp;"。使用HTML, 瀏覽器將"&amp;"轉換爲"&",因此Web服務器在請求的查詢字符串中只能看到"&" 而不是"&amp;"

希望這有助於:)