2011-03-06 57 views
4

我试图在本地apache服务器上设置windex以更改自动生成的文件索引;我的一些文件和文件夹具有UTF-8字符,如»。更改Apache索引的字符集响应标头

这应该不是问题,因为html标题的字符集设置为utf-8。 php文件已经在utf-8中编码。我甚至在我的Apache服务器的httpd.conf中设置了'AddDefaultCharset',但是当我尝试加载任何页面时,我在响应头文件中获得'Content-Type:text/html;charset=ISO-8859-1'。

这是什么原因造成的,我该如何阻止它?

回答

10

原来,Apache有一个单独的设置来编码它生成的索引。您可以通过添加此行到.htaccess文件,放在目录将在其中生成索引设置索引字符集:

IndexOptions Charset=UTF-8 

这个固定为我!

AddDefaultCharset utf-8 

AddCharset是定义字符设置:

-1

对于HTML
把你<head></head>标签之间的以下内容:

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

对于XHTML
把你<head></head>标签之间的以下内容:

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> 

开始您php文件与:

<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ?> 
+0

这就是我在标题中用html表示的意思,我已经将meta标签设置为utf-8。我认为这个问题与Apache服务器有关,因为在浏览器查看我的任何html或php之前,charset已经设置在响应头中。 – elstgav 2011-03-06 21:48:14

0

AddDefaultCharset当响应头的Content-Type为text/plain text/html或
在.htaccess或httpd.conf中可以添加用于任何给定文件扩展名。

在.htaccess或httpd.conf中可以添加:

AddCharset utf-8 .html .css .php .txt .js 

在PHP(之前的任何页面内容输出):

<?php 
header('Content-Type: text/html; charset=utf-8'); 

如果HAVE使用HTML元标签(无法编辑配置或htaccess)它必须是第一件事跟在<head>
参考:Best Practice: Get your HEAD in order

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