2011-07-22 19 views
5

考慮下面的HTML片段:爲什麼瀏覽器呈現 作爲普通空間字符?

<p>Space&nbsp;Test</p> 

當這個HTML是網頁中的使用,並通過瀏覽器呈現的頁面,字符實際上是由「空間」和「測試」之間的瀏覽器渲染的是一個普通的空格字符(U + 0020),而不是非空格字符(U + 00A0)。

(這可通過觀察到的,例如,使用Firefox擴展Character Identifier。)

我在Firefox 5,因特網瀏覽器8,和鉻12嘗試這樣做;在渲染的網頁上都具有相同的U + 0020而不是U + 00A0的行爲,即使源文檔包含&nbsp;而不是普通的空格字符。

爲什麼瀏覽器以這種方式渲染一個普通的空格字符而不是非空格字符?

+0

U + 00A0有分解鏈接到U + 0020。 http://www.charbase.com/00a0-unicode-no-break-space但是這並不能真正回答你的問題。 –

+0

聽起來像一個瀏覽器錯誤。有報道嗎? –

+0

@ColonelPanic我並不認爲這是一個錯誤,因爲所有主流瀏覽器似乎都以相同的方式實現了這種行爲。 –

回答

4

這是一個前置Unicode時代的遺蹟,當標準字符集中不存在NBSP字符時。 HTML將&nbsp;轉義序列定義爲一個不應導致換行的空格。

+0

有趣!你有鏈接到規範中提到的地方嗎? – gilly3

+0

是的,這實際上是在ISO8879中定義的,它是在1986年作爲SGML規範的一部分發布的,該規範基於HTML。您必須支付[實際標準](http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=16388)的副本,但這裏是[有用的鏈接](http: //www.cs.vassar.edu/CES/sgml/ISOnum)。 [HTML 4規範](http://www.w3.org/TR/html4/sgml/entities.html)引用它。 –

+2

我通過w3.org挖掘[HTML 3規範](http://www.w3.org/MarkUp/html3/specialchars.html)發現了這一點。 – gilly3

相關問題