2011-11-29 67 views
0

它可能看起來像一個主觀的問題,但我正在尋找的是何時使用一些硬性規定,當不使用HTML字符引用,特別是考慮到字符集:在HTML文檔中使用字符引用的最佳做法是什麼?

<meta http-equiv="content-Type" content="text/html; charset=utf-8" /> 

我正在從公司網站獲取開發信息,而其他人從其他地方停止開發,似乎以前的開發人員將除AZ和0-9之外的所有內容編碼爲HTML字符引用。例如,每個逗號都被編碼爲&#44;,我不確定這是否是件好事。

具體來說以下SEO不好?

<meta name='keywords' content='eriks industrial services&#44; industrial products&#44; industrial services&#44; eriks&#44; uk&#44; european&#44; leader&#44; european leader&#44; eriks&#44; power transmission&#44; power&#44; bearings'/> 

而具體哪些字符必須始終被編碼爲字符引用?

爲了保持一致性,最好避免&name;並儘可能使用&#DD;

回答

2

字符引用時,應使用文件創建/編輯軟件,數據存儲或傳輸通道不能存儲Unicode數據或保留其編碼的字節流。

實際上,這可能意味着需要使用傳統應用程序或傳統配置或傳統傳輸協議完成工作。在這種情況下,工具鏈的某些部分可能僅支持8位編碼,甚至僅支持ASCII。因此,在這種情況下存儲Unicode字符是不可能的,所以除了ASCII字符之外,還原字符引用可能會很有用,因爲這樣可以避免從8位編碼切換到Unicode時可能出現的令人討厭的編碼轉換問題。使用命名實體而不是字符引用的可讀性稍高一些,但它不必要地使XML兼容性複雜化或遷移到XML,因爲使用實體需要存在DOCTYPE聲明或嵌入式DTD。這不適用於在XML中預先定義的&lt;,&amp;&quot;,&apos'&gt;

如果您使用的是現代環境,那麼通常首選使用Unicode字符,因爲通常(文本)數據可以不經解析/解釋而使用(例如直接從文本中搜索),因此它更簡單可能會導致更易讀,更易於維護的代碼。

中的人物,你必須編碼<&"'當他們出現在屬性值和相同的字符作爲一個屬性值的分隔符。從理論上講,當它出現在]]>字符串的一部分,並不意味着要結束CDATA部分時,也應該跳過>,但這僅用於SGML兼容性,因此通常不需要。這些字符應該使用實體而不是字符引用進行轉義。轉義&的必要性也適用於<a href="...">中的URL值,遺憾的是這些值被遺忘。

+0

「這些字符應該使用實體而不是字符引用進行轉義。」爲什麼?有什麼理由反對使用十六進制字符引用? –

+0

@ChrisCannon這是爲了兼容XML。現在,許多HTML文檔或其中的一部分都是用XML工具生成,處理或讀取的,因此即使結果是HTML並作爲HTML使用,XML兼容性也很重要。在XML中,'<'和'&amp'的替換值不是'<或'&',而是對這些字符的字符引用。例如在屬性中[需要這個](http://www.w3.org/TR/REC-xml/#CleanAttrVals)。我不記得是否使用實體而不是字符引用對於「,」和>是嚴格需要的,但是使用其中所有5個實體的實體是一個通用約定。 – jasso

+0

好吧,但考慮到我的網頁是動態的,數據正在進入以各種方式從數據庫中刪除......我認爲之前的開發人員還決定使用'&#DD;'格式對任何**可能**不安全的字符進行編碼,例如'''所以我只是想確定使用命名實體是否更好。但爲了理智,我認爲我會繼續這種風格。謝謝 –

1

至於我編碼字符意味着該頁面將更易於訪問e.i.更多的瀏覽器將正確顯示它的外部...

我很懶,通常輸入Unicode字符(如√,∞,æ),因爲他們是如果我需要它,而且大多數情況下它工作正常。

可以遇到的問題,如果 1)該數據不能被存儲 2)不能被轉移 3)不能顯示

+0

謝謝,但這並不能真正幫助我在我的情況:) –

相關問題