html - 服务器端包含和字符编码

标签 html character-encoding server-side-includes ssi

我创建了一个 static website其中每个页面具有以下结构:

  1. 标题、菜单等常用内容。
  2. 主要内容 div 中的页面特定内容
  3. 页脚

在本网站中,所有共同的内容在每个页面中都是重复的。为了提高可维护性,我重构了页面以使用服务器端包含 (SSI),这样公共(public)内容就不会重复。现在每个页面的结构是

  1. SSI 用于常见内容,如标题、菜单等。
  2. 主要内容 div 中的页面特定内容
  3. 页脚的 SSI

在重构的站点中,出于某种原因,法文字符在特定于页面的内容区域中不再正确显示,尽管它们在通过 SSI 包含的内容中显示良好。

包含的 header 将字符集指定为:

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

如果我在浏览器中打开其中一个主要内容页面,它会告诉我字符编码是 ISO-8859-1。我尝试将 .htaccess 文件添加到包含以下行的文件夹中

AddDefaultCharset UTF-8
AddCharset UTF-8 .shtml
AddCharset UTF-8 .html

但是那些讨厌的法语口音在使用 SSI 的网站版本上仍然无法正确显示。

最佳答案

您以 UTF-8 格式提供页面,这很好,但至少部分页面是从实际未保存为 UTF-8 的文件中拖入的。 SSI 只是将原始字节放入,它不会尝试重新编码包含,以便它们的字符集与它们被包含到的文件相匹配。

您需要检查所有 html 并将文件包含在文本编辑器中,并确保每个文件都保存为 UTF-8。

正如 John 提到的,您可以通过对所有非 ASCII 字符使用字符引用来避免编码问题,但这是一个巨大的痛苦。

关于html - 服务器端包含和字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/539661/

相关文章:

html - 使用 bootstrap pull-right 防止元素换行

javascript - 换行符作为 Javascript 中的函数参数

php - WAMP + PHP CSS Include 不会更新新样式

html - 如何将相同的声明应用于许多不同的对象?

java - HTML 上的 Xml 输出

java - 在 Oracle 中处理不同编码的记录

php - MySQL HY000 1366 : Trying to store 4 byte utf8 character

php - PHP 中 require_once 的范围是什么?

webstorm - .shtml 包含不工作

HTML 表单域边框样式