【发布时间】:2024-01-01 18:15:02
【问题描述】:
今天我开始了我的第一个 HTML 页面。页面编码具体存储在哪里?
一开始,é 变成了é。然后我使用我的文本编辑器用编码保存文件。 “UTF-8”不起作用。然后我使用了“ISO 8859-1”,它确实有效。我的浏览器怎么知道它是用“ISO 8859-1”编码的?
我在文件中的任何地方都看不到它,所以我很好奇信息存储在哪里。
【问题讨论】:
标签: html encoding utf-8 iso-8859-1
今天我开始了我的第一个 HTML 页面。页面编码具体存储在哪里?
一开始,é 变成了é。然后我使用我的文本编辑器用编码保存文件。 “UTF-8”不起作用。然后我使用了“ISO 8859-1”,它确实有效。我的浏览器怎么知道它是用“ISO 8859-1”编码的?
我在文件中的任何地方都看不到它,所以我很好奇信息存储在哪里。
【问题讨论】:
标签: html encoding utf-8 iso-8859-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 是网络推荐的编码标准。
【讨论】:
é 的 UTF-8 编码是两个十六进制字节 C3A9。C3 A9,当解释为 ISO 8859-1 时是两个字符 :é.
浏览器倾向于正确猜测编码。或者您可以明确告诉它如何解释字节。试试看——你可能会看到 é 和 é 之间的文本变化。
第三种情况是发生“双重编码”时。也就是说,不知何故,é 被视为 UTF-8,十六进制 C383 C2A9。
因此,要真正确定发生了什么,您需要获取 HEX。
【讨论】: