2013-12-17 115 views
1

某些字符(如序號22或8)不會在html中顯示(例如,使用chrome時,例如將它們複製並粘貼到「Ask question」編輯器;我假設爲utf-8)。我如何確定哪些字符是有效的html,以及有效的哪些是呈現的?如何判斷一個字符是否對html有效?

一個表/引用將是有益的(我找不到一個谷歌),但最好我需要一套規則或可以在python中實現的解決方案。

+3

這實際上取決於字體和文檔的字符編碼。如果你正在談論真正的非法字符,維基百科上有一個簡單的列表:http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Illegal_characters – Blender

+0

完美。這就解釋了爲什麼22和8不被接受,他們是非法的。足夠簡單,從這些規則編碼我自己。 – Jeff

回答

0

作爲回答爲註釋通過Blender,從wikipedia

HTML者禁用[8]使用的字符與通用字符 設置/ Unicode碼位

  • 0〜31,除了9,10和13(C0控制字符)
  • 127(DEL字符)
  • 128至159(x80-x9F,C1控制字符)
  • 55296到57343(xD800 - xDFFF中,UTF-16替代半部)

Unicode標準也禁止:

  • 65534和65535(xFFFE - xFFFF),非字符,相關到xFEFF,即字節順序標記。

這些字符甚至不允許引用。也就是說,你甚至不應該把它們寫成數字字符引用。但是, 對字符128-159的引用通常由寬鬆的 Web瀏覽器解釋,就好像它們是對Windows-1252字符編碼中分配給 字節128-159(十進制)的字符的引用。這 是違反HTML和SGML標準,並且字符 已被分配給較高的代碼點,所以HTML文檔作者 應始終使用較高的代碼點。例如,對於 商標符號(™),請使用™,而不是™。

字符9(製表符),10(換行),和13(回車)是 允許在HTML文檔中,但是,與32(空間)沿都 認爲是 「空白」。[9] 「換頁」控制字符 將在12位,在HTML文檔中是不允許的,但是也提到 是「空格」字符之一 - 可能是規範中的 監督。在HTML中,空白字符的大多數連續出現 (除了塊)被解釋爲包含用於呈現目的的單個「字分隔符」的 。單詞 分隔符通常在歐洲 語言中呈現單個寬度空間,但不是所有其他語言。

0

什麼是HTML中的有效字符取決於您對「HTML」和「valid」的定義。不同的HTML版本對於正式有效的字符具有不同的規則,並且它們可能具有有效但不推薦的字符。此外,還有一些通用政策,如贊成標準化表格C;儘管不是HTML規範的一部分,但這些策略通常也被認爲與HTML相關。

呈現的內容(以及如何)取決於瀏覽器,HTML文檔的樣式表以及用戶計算機中的可用字體。而且,並非所有的角色都是這樣呈現的。例如,在普通的HTML內容中,任何連續的空白字符序列都被視爲等同於單個空格字符。

所以答案是真的「這取決於」。考慮問一個更有針對性的實際問題,以獲得更有針對性的答案。

相關問題