2012-01-22 38 views
0

在eclipse中爲我的html頁面使用內置模板時,我在xhtml doctype之前添加了以下代碼:<?xml version="1.0" encoding="ISO-8859-1" ?>此代碼是否會影響html頁面?eclipse中的XHTML文檔類型

+1

它隻影響IE6,但這是它自己的錯。 – BoltClock

回答

1

不,它不會,你的html仍然有效和每個瀏覽器可讀。 (但是,IE9以下的每個版本都會使IE進入怪異模式 - 請參閱@Rob’s comment。)

由於您使用的是基本上是xml類型的xhtml,因此瀏覽器需要某種類型的文檔編碼。

See w3c:

在歷史上,HTML文檔的字符編碼或者是通過HTTP Content-Type頭的charset參數由web服務器指定 ,或經由文檔本身在meta元件。在 XML文檔中,文檔的字符編碼在XML聲明(例如,<?xml version="1.0" encoding="EUC-JP"?>)上被指定爲 。爲了便於攜帶 特定字符編碼的文檔,最好的方法是確保 Web服務器提供正確的標頭。如果這是不可能的,那麼要明確設置其字符編碼的 文檔必須包括XML聲明和編碼聲明以及http-equiv語句(例如,<meta http-equiv="Content-type" content="text/html; charset=EUC-JP" />)。在符合XHTML的用戶 代理中,XML聲明 的編碼聲明的值優先。

順便說一句,這是隻有當你使用另一個字符集比UTF-8或UTF-16。如果您使用默認的UTF8或UTF016,則有一些例外。 (再次)參見W3C

+1

但是,IE瀏覽器會在IE9以下的每個版本都進入怪異模式,因爲IE並沒有處理XHTML並且錯誤地解釋了xml聲明。 – Rob

+1

@Rob:錯誤的是,假設存在正確的文檔類型聲明,它只會將IE6和以下版本放入怪癖模式。在IE9之前IE沒有處理XHTML格式,但是在IE7中修正了XML聲明怪癖模式錯誤。 – BoltClock

1

構造<?xml version="1.0" encoding="ISO-8859-1" ?>不是一個DOCTYPE問題,而是一個XML聲明,它可以在任何XML文檔的開始時使用,無論它是否具有文檔類型聲明,以及它是否恰好是XHTML或其他。根據XHTML 1.0 specification,「所有XML文檔中都不需要XML聲明;但強烈建議XHTML文檔作者在其所有文檔中使用XML聲明。如果文檔的字符編碼不是默認的UTF-8或UTF-16,並且沒有編碼由更高級協議確定,則需要此類聲明。「

因此,如果XHTML文檔實際上是ISO -8859-1編碼,XML聲明是有用的和推薦的。如果不是,那麼這是錯誤的信息。