【问题标题】:server-side includes and character encoding服务器端包含和字符编码
【发布时间】:2010-10-07 01:57:59
【问题描述】:

我创建了一个static website,其中每个页面的结构如下:

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

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

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

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

包含的标头将字符集指定为:

<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 的网站版本上正确显示。

【问题讨论】:

  • “重构站点”的链接不再有效,但我怀疑它的开头没有提供 BOM(字节顺序标记)。原网站上有一个。或者至少 cURL 向我展示了熟悉的 ´╗┐&lt;!DOCTYPE html&gt;

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


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的建议。在Eclipse(我使用的编辑器)中,我把所有文件的文件编码都改成了UTF8,但是结果还是一样。有没有办法可以检查 Eclipse 是否确实正确更改了编码?
  • 尝试将文件(即使只是文本)加载到 Web 浏览器中,将 View->Character Encoding 设置为“UTF-8”并查看重音是否正确显示。即使是记事本也能做到,在紧要关头,所以如果 Eclipse 做不到,我会感到惊讶!
  • 是“test/index.html”文件中的文本出现错误,还是包含在其中?您是否尝试过在文件夹中放置一个“.htaccess”文件,其中包含“AddDefaultCharset UTF-8”行?目前它以纯“文本/html”的形式提供 - 与 到位无关,但仍然如此。
  • included 文件中的重音符号正确显示。文件中的重音符号不起作用。我尝试添加一个 .htaccess 但仍然没有乐趣
  • +1 因为这解决了一个相同的 SSI 问题,我将页面编码为 utf-8,但没有将包含的组件文件保存为 utf-8,所以谢谢!
【解决方案2】:

您的 HTML 文档使用 UTF-8 编码,请尝试使用以下字符代码作为重音字母:http://www.tony-franks.co.uk/UTF-8.htm

【讨论】:

  • 但是为什么只有在使用 SSI 时才会出现这种情况?我在非 SSI 版本中使用 UTF-8,重音字母显示正常。
  • 您是否尝试将“AddCharset UTF-8 .shtml”添加到您的 http.conf 文件中?我不知道这是否可行,但值得一试(假设您包含 .shtml 文件)。
【解决方案3】:

我遇到了和你一样的问题,终于找到了解决办法。

UTF8 makes an extra line on my site

将所有文件保存为不带 BOM 的 UTF-8 (http://en.wikipedia.org/wiki/Byte_order_mark)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 2011-06-30
    • 2014-06-02
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多