文本运行不在Unicode规范化表单C中

时间:2011-03-28 21:15:28

标签: html5 validation unicode notepad++ unicode-normalization

当我尝试验证我的网站(http://dvartora.com/DvarTora/)时,我收到以下错误:

  

文本运行不在Unicode规范化表单C

答:这是什么意思?

B:我可以用记事本++修复它吗?

C:如果B不是,我如何使用免费工具(不是Dreamweaver)解决这个问题?

2 个答案:

答案 0 :(得分:17)

  

这是什么意思?

来自W3C

  

在Unicode中可以生成   具有不同序列的相同文本   的人物。例如,拿走   匈牙利语világ。第四个   字母可以作为存储在内存中   预先组合 U + 00E1带有急性的拉丁文小写字母A(单个)   字符)或分解   U + 0061 LATIN小写字母序列   A接着是U + 0301 COMBINING ACUTE   ACCENT(两个字符)。

     

világ=világ

     

Unicode标准允许   这些替代品,但要求   两者都被视为相同。至   提高效率,应用   通常会在之前标准化文本   进行搜索或比较。   在这种情况下,归一化意味着   将文本转换为全部使用   预先组合或全部分解   字符。

     

有四种规范化形式   由Unicode标准指定:   NFC,NFD,NFKC和NFKD。 C代表   用于(预)组合,以及用于   分解。 K代表   兼容性。改善   互操作性,W3C建议   使用 NFC 规范化文本   网络。

除了“提高互操作性”之外,预分解文本通常看起来比分解文本更好。

  

如何使用免费工具解决此问题

使用与您最喜爱的编程语言中的Python text = unicodedata.normalize('NFC', text)等效的函数。

(或者,如果您不打算编写程序,则应将您的问题转移给超级用户或网站管理员。)

答案 1 :(得分:10)

一个。这意味着它所说的内容(请参阅dan04对简短答案的解释和长标准的Unicode标准),但它只是表明验证者的作者想要发出警告。 HTML5规则不需要规范化表格C(NFC);它更像是W3C所青睐的东西。

B.除非您决定使用NFC实际上会更好,否则无需修复任何内容。如果您这样做,那么有各种自动转换为NFC的工具,例如免费的BabelPad编辑器。如果您只需要处理不在NFC中的一个字符,则可以使用Fileformat.info character search等字符信息存储库来查找字符的规范分解并使用它。

您是否使用NFC取决于许多考虑因素和所涉及的角色。通常,NFC工作得更好,但在某些情况下,替代的非NFC演示会产生更合适的渲染或在某些特定处理中更好地工作。

例如,在重复的问题中,引用Ω已被报告为触发消息。 (验证器实际上也会检查作为此类参考输入的字符,而不仅仅是纯文本级NFC检查。)参考代表U + 2126 OHM SIGN“Ω”,其被定义为规范等效于U + 03A9 GREEK CAPITAL欧米茄的字母“Ω”。 Unicode标准明确指出后者是首选字符。字体也更好。但是如果你有特殊的理由使用OHM SIGN,你可以这样做,而不违反当前的HTML5规则,你可以忽略验证器警告。