我正在使用托管公司,如果文件index.html
不存在,它将列出目录中的文件。它使用ISO 8859-1作为默认编码。
如果服务器是 Apache,有没有办法将 UTF-8 设置为默认值?
我发现它实际上使用的是 HTML 3.2 的 DOCTYPE,然后根本没有charset
……所以它没有设置任何编码。但是有没有办法将其更改为使用 UTF-8?
我正在使用托管公司,如果文件index.html
不存在,它将列出目录中的文件。它使用ISO 8859-1作为默认编码。
如果服务器是 Apache,有没有办法将 UTF-8 设置为默认值?
我发现它实际上使用的是 HTML 3.2 的 DOCTYPE,然后根本没有charset
……所以它没有设置任何编码。但是有没有办法将其更改为使用 UTF-8?
在 httpd.conf 添加(或更改,如果它已经存在):
AddDefaultCharset utf-8
将此添加到您的.htaccess
:
IndexOptions +Charset=UTF-8
或者,如果您具有管理员权限,则可以通过编辑httpd.conf
和添加全局设置:
AddDefaultCharset UTF-8
(您也可以使用AddDefaultCharset
in .htaccess
,但它不会以这种方式影响 Apache 生成的目录列表。)
请参阅AddDefaultCharset 指令、AddCharset 指令和本文。
AddDefaultCharset utf-8
但我不得不时不时地使用汉字。
&#
以前,我使用hack将汉字翻译成 Unicode 代码并将其包含在文档中 。但它只对有几个字符的页面有用。有一种更好的方法可以做到这一点:在文件名中编码字符集信息,apache 将基于此输出正确的编码头。这要归功于
AddCharset
conf 文件中的行,例如下面的行:
conf/httpd.conf
:
AddCharset UTF-8 .utf8
因此,如果您有一个名称以
.html.utf8
.
在 Ubuntu 12.04 上,取消注释AddDefaultCharset UTF-8
. /etc/apache2/conf.d/charset
如果您使用的是上游 Apache,该文件可能名为 httpd.conf,您可能必须插入该行。
在文件.htaccess中,添加以下行:
AddCharset utf-8 .html .css .php .txt .js
这适用于那些无法访问其服务器配置文件的人。当其他尝试失败时,这只是另一件事。
至于有关使用文件.htaccess的性能问题,我还没有看到这一点。我的典型页面加载时间是 150-200 毫秒,有或没有文件.htaccess。
如果您的页面无法正确呈现,性能有什么好处?大多数共享服务器不允许用户访问配置文件,这是添加字符集的首选位置。
为了完整起见,在 Ubuntu 上的 Apache2 上,您将在 conf-available 中的 charset.conf 中找到默认字符集。
取消注释该行
AddDefaultCharset UTF-8
我不确定您是否有权访问 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”时才有效。
您还应该确保您的页面也有字符集。有关更多信息,请参见:
这是未经测试的,但它可能会起作用。
在您的.htaccess文件中,添加:
<Files ~ "\.html?$">
Header set Content-Type "text/html; charset=utf-8"
</Files>
但是,这将需要服务器上的mod_headers。
如果您有 UTF-8 格式的长文件名,请提示:默认情况下,它们将被缩短为 20 个字节,因此最后一个字符可能会被“切成两半”,因此无法正确识别。然后您可能需要设置以下内容:
IndexOptions Charset=UTF-8 NameWidth=*
NameWidth
设置将防止缩短您的文件名,使它们正确显示和可读。
正如其他用户已经提到的,这应该添加到httpd.conf
或apache2.conf
(如果您有管理员权限)或.htaccess
(如果您没有)中。
在所有 HTML 文件都采用 UTF-8 格式并且没有内容类型的元标记的情况下,我只能通过添加两个指令来为 Apache 2.4 发送这些文件设置所需的默认值:
AddLanguage ru .html
AddCharset UTF-8 .html
把它留空:'default_charset' in WHM :::::: default_charset =''
PS:在WHM中,转到→主页→服务配置→ PHP配置编辑器→单击“高级模式” →找到“default_charset”并将其留空。什么都没有,不是 UTF-8 也不是 ISO。
<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
就我而言,我将此添加到文件.htaccess:
AddDefaultCharset off
AddDefaultCharset windows-1252