Web 文档的编码与文档中明确使用的编码之间的混淆

confusion between encoding of a web document and the encoding explicitly used in the document

我知道这是一个非常愚蠢的问题,但不幸的是我无法自己解决。在谈到编码和字符集主题时,我总是很困惑。我会解释我从主题中理解的内容,然后我会提出问题。

当你想保存文件时,你会以特定的字符编码进行保存,这意味着文件的每个字符都根据其编码适合内存。对吗?

例如,如果 html 文件具有 utf-16 编码,这是否意味着浏览器使用 utf-16 编码来解码给定文件以读取 源代码?

meta 元素中使用 charset 属性是否定义了语言 (html) 应该使用什么编码才能在浏览器中正确显示字符?

html自己加了一个"html character reference"和unicode字符码无关?

编辑 1:

所以在@snakecharmerb 之后我意识到了我的一些错误:

1- 我不知道没有关于 [text] 文件编码的元数据。

2- charset 属性告诉浏览器文件的编码,因为此信息无法从文件本身构想出来(某种程度上 它可以。请参阅 this 答案)

3- 一个文本文件只能有一种编码,如果一个文件使用 utf-8 编码,则意味着它遵循 Unicode 字符集 (UCS)。您不能将 utf-8 编码与其他字符集一起使用,而如今 utf-8 和 unicode 这两个术语几乎可以互换。

当你想保存文件时,你会以特定的字符编码进行保存,这意味着文件的每个字符都根据其编码适合内存。对吗?

  • 是的,每个字符都被编码为特定的数值;解码将数值转换回字符

例如,如果 html 文件具有 utf-16 编码,这是否意味着浏览器使用 utf-16 编码解码给定文件以读取源代码?

  • 浏览器将尝试使用来自 Web 服务器的响应 header 中 Content-Type header 中提供的编码对页面进行解码;如果缺少 header 或未指定编码,将使用页面中的 meta charset 标记。如果两者都未指定,浏览器可能会尝试从文档内容推断编码,最后回退到 latin-1

  • w3c recommends 总是设置 meta 标签,只设置 Content-Type header 如果你确定它是正确的,并且总是使用 UTF- 8 作为你的编码。

在 meta 元素中使用 charset 属性是否定义了语言 (html) 应该使用什么编码才能在浏览器中正确显示字符?

  • 它告诉浏览器应该使用哪种编码来解码页面

和html自己加了一个"html character reference"和unicode字符码无关?

  • html 实体(如 '')独立于任何特定的编码,但它们的组成字符本身将被编码和解码