逃避或不逃避:良好形成的XHTML与变音符号

时间:2011-02-27 23:04:42

标签: xhtml unicode

假设您有一个英文的XHTML文档,但它有重音字符(例如meta name="author" content="José")。假设您无法控制HTTP标头。

  1. 是否应为相应的命名实体替换字符(例如á等)?

  2. xml:lang属性是否应设置为英语?

  3. 我知道我可以查看W3C推荐,但我从实际角度提出更多要求。

2 个答案:

答案 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类型。