假设您有一个英文的XHTML文档,但它有重音字符(例如meta name="author" content="José"
)。假设您无法控制HTTP标头。
是否应为相应的命名实体替换字符(例如á
等)?
xml:lang属性是否应设置为英语?
我知道我可以查看W3C推荐,但我从实际角度提出更多要求。
答案 0 :(得分:2)
是否应为相应的命名实体替换字符(例如
á
等)?
由于您无法控制HTTP标头(以及声明的字符编码),您应该使用ASCII对所有内容进行编码(因为它几乎是所有内容的安全子集)。
这将要求您将实体用于非ASCII的任何内容。首选命名的(因为编辑HTML的人更容易处理)但不是必需的。
doc类型和xml:lang属性是否应设置为英语?
Doctype中的EN
是对DTD 中的注释的语言的引用.HTML 3.x / 4.x和XHTML 1.x Doctypes必须始终使用EN
。
lang
属性(以及另外 xml:lang
属性)应指定内容的编写语言。如果是英语,则应为英语。
答案 1 :(得分:1)
看起来我有点错过了这一点,所以这就是答案,跟进是对编码的咆哮。
xml:lang="en"
并不禁止您使用任何您想要的字符,它只是供浏览器,搜索引擎,辅助功能软件等使用的元数据。如果您的页面是,请使用英语,然后继续,写下来。
从变音符号开始,HTML支持在属性和文本节点中直接编写字符或编写实体(也可能在节点名称中,但我不确定;无论如何,HTML不会发生这种情况)。但是,我认为在任何地方使用UTF-8比逃避实体更容易;并且有4种方法来设置页面的编码,因此很难相信,在实际情况下,你不能这样做。
从实际的角度来看,作为一个以我的名字变音的法语发言人,我发现这是一个主要烦恼(并且降价不会让我压力 MAJOR 当网站不支持强调字母时,强大>足够。即使您将xml:lang
设置为英语,也无法解决此问题。
我建议你使用UTF-8,因为它向后兼容ASCII,它可以编码每个UCS字符。如果您无法控制HTTP标头,则仍有两个选项:XML声明和meta
标记。
如果我没记错,如果您获得XML文档,encoding
标记中的<?xml?>
“属性”优先。这是您的第一个解决方案,但传统浏览器可能不支持它。
<?xml encoding="UTF-8"?>
您的其他选项,并且支持得更好,是使用meta
标记告诉浏览器有关编码的信息。在HTML4-中,您可以使用:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
在HTML5 +中,您可以使用这种更简单的形式:
<meta charset="UTF-8">
由于您使用的是XHTML,因此您需要自行关闭这些内容(并在application/xhtml+xml
Content-Type
标记中使用相应的<meta>
MIME类型。