【问题标题】:HTML5 Encoding & CyrillicHTML5 编码和西里尔文
【发布时间】:2026-01-29 06:25:01
【问题描述】:

让我好奇的东西——据说 HTML5 中的默认字符编码是 UTF-8。但是,如果我有一个带有 HTML5 文档类型的简单 HTML 文件,如下面的代码,我会得到:

“你好”在俄语中:“ЗдраÑÑ,вуйÑ,е”

在 Chrome 33+、Safari 6、IE11 等中

<!DOCTYPE html>

<html>

<head></head>

<body>
    <p>"hello" in Russian is "здраствуйте"</p>
</body>

</html>

什么给了?浏览器不应该使用 UTF-8 unicode 标准并正确显示文本吗?我正在使用 Coda,它默认设置为使用 UTF-8 编码保存 html 文件,所以这不是问题。

【问题讨论】:

  • 您可以将文件保存为您想要的任何文件 - 浏览器不会在您的系统上而是在用户上,您永远不知道他们的浏览器有什么设置。
  • “你好”在俄语中是“здраствуйте”,这是错误的!俄语中的“你好”是“здравствуйте”!

标签: html character-encoding cyrillic


【解决方案1】:

示例中的文本数据是 UTF-8 编码的文本,被误解为 window-1252 编码。原因是没有指定编码,迫使浏览器进行猜测。要解决此问题,请指定编码;请参阅 W3C 页面Character encodings。两种独立于服务器设置的简单方法,只要服务器不在 HTTP 标头中发送错误的编码信息:

1) 使用 BOM 将文件保存为 UTF-8(在您的创作程序中可能有一个选项。

2) 在head 部分添加以下标签:

<meta charset=utf-8>

没有为 HTML5 指定单一的默认编码。相反,浏览器期望在未声明编码时进行猜测。这是一个相当复杂的过程,在8.2.2.2 Determining the character encoding 中进行了描述。

【讨论】:

    【解决方案2】:

    如果您想确定浏览器将使用哪个字符集,您的页面标题中必须有

     <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    

    否则您将受制于本地设置和浏览器自动化。

    【讨论】: