服务器端包含和字符编码

时间:2009-02-12 01:39:54

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

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

  1. 标题,菜单等常见内容
  2. 主要内容div中的页面特定内容
  3. 页脚
  4. 在本网站中,每个页面都复制了所有常见内容。为了提高可维护性,我重构了页面以使用服务器端包含(SSI),以便不重复共同内容。现在每页的结构都是

    1. SSI用于标题,菜单等常见内容
    2. 主要内容div中的页面特定内容
    3. SSI for footer
    4. 在重构网站中,由于某种原因,法语字符不再在特定于页面的内容区域中正确显示,尽管它们在通过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的网站版本上没有正确显示。

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我遇到了和你一样的问题,最后找到了修复它的解决方案。

UTF8 makes an extra line on my site

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