2009-07-07 56 views
2

在我的HTML中,我可以在網址中使用字符實體引用「 」來代替「%20」嗎?我可以用含有空格的網址替換%20嗎?

它們都是空格,對嗎?

+2

你有什麼可能的原因想要做到這一點呢?我有一種感覺,我不想知道... – Welbog 2009-07-07 17:47:41

+0

你想要做什麼? – 2009-07-07 17:52:45

+0

@Pup:這裏的問題是,URL和HTML是兩個完全分開的東西,符合不同的規則。您不能認爲一個系統的規則對另一個系統自動爲真,只是因爲它們是結合使用的。 – Tomalak 2009-07-07 17:54:13

回答

14

簡而言之,它們都用來表示「空格」,但它們代表不同的空格。

%20是字節32的URL轉義,它對應於您可能在URL中使用的幾乎任何編碼的普通舊空格。

 是一個HTML字符引用,它實際上是指Unicode(也是ISO-8859-1又名Latin-1)的字符160。這完全是一個不同的空間特徵 - 「非破壞空間」。即使它們看起來幾乎相同,但它們是不同的字符,並且服務器不太可能以相同的方式對待它們。

6

不,也不是空間(技術上)。雖然代表空間以不同的方式。盡一切努力在您的網址中不要有空格或空格的代表。許多人覺得它更優雅(包括我在內)以取代空格_或 -

4

第& nbsp;是一個HTML非破壞空間實體;這個實體在文件系統或URL可能指向的任何地方使用時沒有意義。網址不以HTML編碼。

2

%20是你使用URL編碼得到的,所以這是你應該使用的,如果你打算在URL中使用它。

& nbsp;是一個HTML實體,它應該用於HTML文檔中的「不間斷空間」。

2

不,不在URL中。你可以做的是替換URL的文本表示中的空格。

所以不是:

<a href="http://some.site/doc%20with%20spaces">http://some.site/doc%20with%20spaces</a> 

你可以有:

<a href="http://some.site/doc%20with%20spaces">http://some.site/doc&nbsp;with&nbsp;spaces</a> 
0

無論是空間。你不應該使用的空間,但如果什麼都原因,你無法避免它,你就應該能夠做到......

<a href="Web Page.aspx">Hey there</a> 

...點擊它會自動將用戶導航到

WebSite/Web%20Page.aspx 
0

大多數人試圖絕對避免在URL中的文件名空格。每次嘗試這樣做,他們都會給你一個嚴重的頭痛。

如果你想在URL中有空格,你必須用%20編碼它們。

&瀏覽器使用nbsp知道如何顯示頁面。此信息僅用於顯示。 %20將被髮送到服務器,該服務器管理將網頁傳輸給訪問者所需的所有內容。服務器不會說html,因此服務器會將file_name的正常部分解釋爲&,並搜索以foo  的方式調用的文件。該文件不會被發現。更糟糕的是,網絡服務器會認爲&開始url的變量部分,只搜索頁面foo,然後嘗試生成變量nbsp和變量欄,但他希望看到它們的任何值。總而言之,萬維網服務器無法處理其中包含 的URL。