【问题标题】:Basics on encoding编码基础
【发布时间】:2024-01-01 18:15:02
【问题描述】:

今天我开始了我的第一个 HTML 页面。页面编码具体存储在哪里?

一开始,é 变成了é。然后我使用我的文本编辑器用编码保存文件。 “UTF-8”不起作用。然后我使用了“ISO 8859-1”,它确实有效。我的浏览器怎么知道它是用“ISO 8859-1”编码的?

我在文件中的任何地方都看不到它,所以我很好奇信息存储在哪里。

【问题讨论】:

标签: html encoding utf-8 iso-8859-1


【解决方案1】:

编码存储在文件本身的标头中。 Notepad++ 和类似的程序通常提供许多选项来更改和查看它。

此外,您可以使用元标记提供值:

  • <meta charset="UTF-8"> (HTML5)
  • <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> (HTML4)

浏览器使用这些标签来解析您的文件。但是,它们没有定义文件本身的编码(这就是您的情况似乎正在发生的事情:您的文件具有编码 A,而浏览器正在尝试读取编码 B),并且浏览器可以忽略这些条件。

默认编码也可以由您的服务器定义(和覆盖)。 .htaccess 编码配置示例:

AddDefaultCharset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml

UTF-8 是网络推荐的编码标准。

【讨论】:

    【解决方案2】:

    é 的 UTF-8 编码是两个十六进制字节 C3A9。
    C3 A9,当解释为 ISO 8859-1 时是两个字符é.

    浏览器倾向于正确猜测编码。或者您可以明确告诉它如何解释字节。试试看——你可能会看到 éé 之间的文本变化。

    第三种情况是发生“双重编码”时。也就是说,不知何故,é 被视为 UTF-8,十六进制 C383 C2A9

    因此,要真正确定发生了什么,您需要获取 HEX。

    【讨论】: