我正在使用一个托管公司,如果文件夹中没有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
/etc/apache2/conf-available/charset.conf
中更改这个配置。 - WoodrowShigeru.htaccess
文件中:IndexOptions +Charset=UTF-8
或者,如果您具有管理员权限,可以通过编辑 httpd.conf
并添加以下内容来全局设置:
AddDefaultCharset UTF-8
你也可以在.htaccess
文件中使用AddDefaultCharset
,但这种方式不会影响Apache生成的目录列表。
.htaccess
可以影响所有子目录,可能 Apache 会一直查找任何 .htaccess
直到网站文件夹的根目录。 - nonopolarity.htaccess
在所有服务器上的工作方式 - 它也会影响所有子目录。然而,使用.htaccess
无法强制Apache生成的目录列表页面转换为UTF-8(据我所知)。 - Mathias Bynens.htaccess
文件更改服务器范围的设置通常是不良实践。当服务器设置分布在各种文件中时,会使 bug 更难以追踪。还会略微影响性能:对于每个请求的文件,Apache 都需要读取目录的 .htaccess
文件和所有父目录的 .htaccess
文件。因此,.htaccess
应仅用于特定目录设置(例如,防止访问特定目录)或者在绝对无法获取管理员权限时使用。 - Robbert请参考AddDefaultCharset 指令,AddCharset 指令以及这篇文章。
AddDefaultCharset utf-8
但我有时需要使用中文字符。以前,我将中文字符转换为Unicode代码,并使用
&#
方法将其包含在文档中。但这只适用于页面中只有少量字符的情况。有一个更好的方法:将字符集信息编码到文件名中,Apache将根据此输出正确的编码标头。这得益于conf文件中的
AddCharset
行,例如下面的一行:
conf/httpd.conf
:
AddCharset UTF-8 .utf8
所以,如果你有一个文件名以.html.utf8
结尾的文件,Apache将按照UTF-8编码来提供页面,并在响应头中包含正确的字符编码指示。在文件.htaccess中,添加此行:
AddCharset utf-8 .html .css .php .txt .js
对于那些没有访问服务器配置文件的人来说,此方法是尝试其他方法失败时可以尝试的一个选择。
就使用文件.htaccess而言,我并未发现性能问题。我的典型页面加载时间为150-200毫秒,无论是否使用文件.htaccess。
如果您的页面不能正确呈现,那么性能有什么用?大多数共享服务器不允许用户访问配置文件,而这是添加字符集的首选位置。
.htaccess
文件,请不要现在开始。这是个坏主意(tm),因为会有性能和管理方面的问题。 - Signal15/etc/apache2/conf.d/charset
中的AddDefaultCharset UTF-8
行即可。如果您使用的是上游Apache,则该文件可能称为httpd.conf,并且您可能需要插入该行。/etc/apache2/conf.d/charset
这个文件不存在。它是由你的发行版创建的自定义包含文件,就像其他不是 httpd.conf
的文件一样。请注意,这里不包括任何解释或额外信息。 - anon/etc/apache2/conf-enabled/charset.conf
。但这也不起作用。 - Alator<Files ~ "\.html?$">
Header set Content-Type "text/html; charset=utf-8"
</Files>
然而,这将需要服务器上安装 mod_headers 模块。
<Files>
标签中。 - GeremiaAddDefaultCharset
方法都不起作用。我使用的是Apache 2.4.57在FreeBSD 13.3上。 - undefined为了完整性,在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”时才有效。
您还应确保页面也设置了字符集。有关更多信息,请参见此处:
IndexOptions Charset=UTF-8 NameWidth=*
,NameWidth
设置可以防止缩短文件名,使它们正确显示和可读。正如其他用户已经提到的,这应该添加在 httpd.conf
或 apache2.conf
(如果您具有管理员权限)或者 .htaccess
(如果没有)。将其留空即可:'default_charset' in WHM :::::: default_charset =''
P.S.:在WHM中,进入 → 主页 → 服务配置 → PHP配置编辑器 → 点击 '高级模式' → 查找“default_charset”并将其留空。 什么都不要填写,不是UTF-8也不是ISO。
AddDefaultCharset
为utf-8(在Debian上,它位于/etc/apache2/conf-available/charset.conf
)。 - aderchox