<!DOCTYPE html> 是否会使编码定义过时?

Does <!DOCTYPE html> make the encoding definition obsolete?

It means,UTF-8 是标准的 HTML5 编码。如果 html DOCTYPE 定义为 <!DOCTYPE html> 我是否需要定义页面的编码,例如

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

PS:我应该加上原因,为什么我要问。我的页面保存为UTF-8,doctype定义为<!DOCTYPE html>。但我什至收到来自 Mac 用户的消息,他会破坏德语变音字符。我很早就知道这个问题,前 unicode 时代 - 并且认为,UTF-8 是它的最终解决方案。

PPS:有两种破字体。我添加了两张从用户那里获得的屏幕截图。

DOCTYPE html:

由于遗留原因,需要 DOCTYPE。

在 HTML 中,文档类型是在所有文档顶部找到的必需 "<!DOCTYPE html>" 序言。

它的目的是防止浏览器在呈现文档时切换到 so-called “quirks mode”

也就是说,"<!DOCTYPE html>" 文档类型确保浏览器best-effort 尝试遵循相关规范,而不是使用不同的呈现模式与某些规范不兼容。


元字符集:

如果设置了 charset 属性,则 meta 元素是一个字符集声明,给出了对文档进行编码的字符编码。

你是对的,HTML-5中的默认字符编码是UTF-8,但是如果HTML5网页使用了不同于UTF-8的字符集,它应该是在标签中指定,例如:

<meta charset="ISO-8859-1">

因此,如果您的页面使用 UTF-8,您可以省略它,尽管我认为无论如何保留它都是一个好的做法。但是,如果您使用不同的编码,则需要它。

The rule, in general, would be: Specify your character encoding

为了帮助浏览器呈现您网页上的文本,您应该始终为您的文档指定一种编码。此编码应出现在文档(或框架)的顶部,因为某些浏览器无法识别出现在文档深处的字符集声明。

此外,您应该确保您的 Web 服务器没有发送冲突的 HTTP header。 header 例如 content-type: text/html; charset=ISO-8859-1 将覆盖页面中的任何字符集声明。

尝试打开此页面:http://alohci.net/static/encoding.html

它包含 <!DOCTYPE html> 但没有关于编码的其他信息。你看到了什么?

你看到了吗:

或这个

还是别的?

如果您像我一样看到第二张图片,那么该页面将被处理为 WIN-1252,而不是 UTF-8。但是,根据您身处世界的不同位置,您可能会看到不同的东西。