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