实体代码和 lang 属性:我应该同时使用两者吗?

Entity codes and the lang attribute: should I use both?

我正在用芬兰语编写标记文档。

我正在使用 lang="fi-fi" 属性。我应该将标记实体(ä 表示 ä 等)与语言属性结合使用,还是仅使用语言属性就足够了?实体和语言属性如何相互影响?

"problem" 是因为标记是在没有实体的情况下编写的,我有一个脚本应该使用正则表达式将 scandic 字母替换为实体——在定义 lang 属性后,脚本不会' 似乎不再起作用(它应该在添加 lang 属性之前起作用)。

我主要担心的是无论浏览器如何,标记都能正确呈现,尽管可以假设 "modern" 浏览器。

lang 属性和实体完成完全不同的工作。

lang 属性告诉解析器文档是用什么人类语言编写的。例如,这允许搜索引擎判断它是否适合呈现给芬兰语演讲者和屏幕reader软件到select正确的发音库。

实体只是让您代表您无法代表的角色。例如

  • 因为你不能输入你键盘的字符
  • 因为保存文档的字符编码(例如 ASCII)不包括该字符。本世纪,您应该几乎无处不在地使用 UTF-8,不必为此担心。
  • 因为该字符在 HTML 中具有特殊含义(例如 <)。

  • 如果您知道文档文本将使用哪种语言编写,请始终使用 lang 属性
  • 在 HTML
  • 中对具有特殊含义的字符始终使用实体
  • 如果您可以合理地确定字符编码不会被破坏(大多数情况下您可以这样做),请使用文字字符,因为它们使用的字节更少并且在源代码中更易于阅读。

我的问题的根源实际上是字符编码。尽管所有文档都是用 UTF-8 定义的,但脚本却无法识别它。通过告诉脚本输入文件(应该用实体修复)是 UTF-8 编码的,脚本再次正常运行。

作为对标题中问题的回答:绝对确保文档与服务器兼容——是的,我应该使用实体编码(尽管我知道假设服务器允许 UTF-正如 Quentin 所暗示的那样,8 通常是非常安全的假设)。由于其他原因(与自动内容生成相关),我也应该使用 lang 属性。