145

我正在使用托管公司,如果文件index.html不存在,它将列出目录中的文件。它使用ISO 8859-1作为默认编码。

如果服务器是 Apache,有没有办法将 UTF-8 设置为默认值?

我发现它实际上使用的是 HTML 3.2 的 DOCTYPE,然后根本没有charset……所以它没有设置任何编码。但是有没有办法将其更改为使用 UTF-8?

4

13 回答 13

183

在 httpd.conf 添加(或更改,如果它已经存在):

AddDefaultCharset utf-8
于 2009-05-27T04:11:25.020 回答
58

将此添加到您的.htaccess

IndexOptions +Charset=UTF-8

或者,如果您具有管理员权限,则可以通过编辑httpd.conf和添加全局设置:

AddDefaultCharset UTF-8

(您也可以使用AddDefaultCharsetin .htaccess,但它不会以这种方式影响 Apache 生成的目录列表。)

于 2012-06-07T06:44:40.787 回答
30

请参阅AddDefaultCharset 指令AddCharset 指令本文

AddDefaultCharset utf-8

但我不得不时不时地使用汉字。&#以前,我使用hack将汉字翻译成 Unicode 代码并将其包含在文档中 。但它只对有几个字符的页面有用。

有一种更好的方法可以做到这一点:在文件名中编码字符集信息,apache 将基于此输出正确的编码头。这要归功于 AddCharsetconf 文件中的行,例如下面的行:

conf/httpd.conf

AddCharset UTF-8 .utf8

因此,如果您有一个名称以.html.utf8.

于 2009-05-27T04:11:01.993 回答
25

在 Ubuntu 12.04 上,取消注释AddDefaultCharset UTF-8. /etc/apache2/conf.d/charset如果您使用的是上游 Apache,该文件可能名为 httpd.conf,您可能必须插入该行。

于 2013-03-06T16:49:40.583 回答
25

在文件.htaccess中,添加以下行:

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

这适用于那些无法访问其服务器配置文件的人。当其他尝试失败时,这只是另一件事。

至于有关使用文件.htaccess的性能问题,我还没有看到这一点。我的典型页面加载时间是 150-200 毫秒,有或没有文件.htaccess

如果您的页面无法正确呈现,性能有什么好处?大多数共享服务器不允许用户访问配置文件,这是添加字符集的首选位置。

于 2014-08-12T03:09:23.727 回答
12

为了完整起见,在 Ubuntu 上的 Apache2 上,您将在 conf-available 中的 charset.conf 中找到默认字符集。

取消注释该行

AddDefaultCharset UTF-8
于 2014-08-26T00:27:34.170 回答
11

我不确定您是否有权访问 Apache 配置 (httpd.conf),但您应该能够设置 AddDefaultCharset 指令。看:

http://httpd.apache.org/docs/2.0/mod/core.html

查找 mod_mime.c 模块并确保设置了以下内容:

AddDefaultCharset utf-8 

或等效的 Apache 1.x 文档 ( http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset )。

但是,这仅在“响应内容类型为 text/plain 或 text/html”时才有效。

您还应该确保您的页面也有字符集。有关更多信息,请参见:

http://www.w3.org/TR/REC-html40/charset.html

于 2009-05-27T04:12:27.953 回答
8

这是未经测试的,但它可能会起作用。

在您的.htaccess文件中,添加:

<Files ~ "\.html?$">  
     Header set Content-Type "text/html; charset=utf-8"
</Files>

但是,这将需要服务器上的mod_headers

于 2009-05-27T04:09:46.170 回答
4

如果您有 UTF-8 格式的长文件名,请提示:默认情况下,它们将被缩短为 20 个字节,因此最后一个字符可能会被“切成两半”,因此无法正确识别。然后您可能需要设置以下内容:

IndexOptions Charset=UTF-8 NameWidth=*

NameWidth设置将防止缩短您的文件名,使它们正确显示和可读。

正如其他用户已经提到的,这应该添加到httpd.confapache2.conf(如果您有管理员权限)或.htaccess(如果您没有)中。

于 2016-05-03T20:40:01.417 回答
3

在所有 HTML 文件都采用 UTF-8 格式并且没有内容类型的元标记的情况下,我只能通过添加两个指令来为 Apache 2.4 发送这些文件设置所需的默认值:

AddLanguage ru .html
AddCharset UTF-8 .html
于 2014-12-11T07:59:55.443 回答
2

把它留空:'default_charset' in WHM :::::: default_charset =''

PS:在WHM中,转到→主页服务配置PHP配置编辑器→单击“高级模式” →找到“default_charset”并将其留空。什么都没有,不是 UTF-8 也不是 ISO。

于 2016-11-04T09:55:39.173 回答
1

<meta charset='utf-8'>覆盖 Apache 默认字符集(cf /etc/apache2/conf.d/charset

如果这还不够,那么您可能使用ISO 8859-1编码字符集创建了原始文件。您必须将其转换为正确的字符集:

iconv -f ISO-8859-1 -t UTF-8 source_file.php -o new file.php
于 2020-10-22T16:37:52.613 回答
0

就我而言,我将此添加到文件.htaccess

AddDefaultCharset off
AddDefaultCharset windows-1252
于 2020-01-11T19:15:27.263 回答