Answers:
在httpd.conf中添加(或更改它是否已经存在):
AddDefaultCharset utf-8
/etc/apache2/conf-available/charset.conf
将此添加到您的.htaccess
:
IndexOptions +Charset=UTF-8
或者,如果您具有管理员权限,则可以通过编辑httpd.conf
和添加以下内容进行全局设置:
AddDefaultCharset UTF-8
(您也可以使用AddDefaultCharset
in .htaccess
,但那样不会影响Apache生成的目录列表。)
.htaccess
也可能会影响所有子目录,apache可能会一直寻找.htaccess
父目录中的所有目录,直到网站文件夹的根目录
.htaccess
在所有服务器上的工作方式-它也会影响所有子目录。但是,使用.htaccess
(AFAIK)不能将Apache生成的目录列表页面强制设置为UTF-8 。
.htaccess
通常是不好的做法。当服务器设置分布在各种文件中时,错误变得更加难以跟踪。性能也会受到轻微影响:对于每个请求的文件,Apache必须读取目录的.htaccess
文件以及.htaccess
父目录的所有文件。.htaccess
因此,仅应将其用于特定于目录的设置(例如,阻止访问特定目录)或绝对不可能获得管理员权限的情况。
请参阅AddDefaultCharset指令,AddCharset指令和本文。
AddDefaultCharset utf-8
但是我必须不时使用汉字。以前,我将汉字转换为Unicode代码,并使用
&#
hack 将其包含在文档中 。但这仅对具有几个字符的页面有用。有一种更好的方法:对文件名中的字符集信息进行编码,并且apache将基于该信息输出正确的编码头。这要归功于
AddCharset
conf文件中的行,例如下面的行:
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
。它是您的发行版中的自定义包含文件。就像不是的其他任何文件一样httpd.conf
。
/etc/apache2/conf-enabled/charset.conf
在我的发行版上(Ubuntu 16.4)。也没有用。
在.htaccess中添加以下行:
AddCharset utf-8 .html .css .php .txt .js
这适用于那些无法访问其服务器的conf文件的用户。当其他尝试失败时,尝试只是另一件事。
至于有关使用.htaccess的性能问题,我还没有看到。我的典型页面加载时间是150-200 mS(带有或不带有.htaccess)
如果您的页面无法正确呈现,性能会有什么好处。大多数共享服务器不允许用户访问配置文件,这是添加字符集的首选位置。
.htaccess
文件,请不要立即开始。由于性能和管理原因,这是一个不好的主意(tm)
我不确定您是否有权访问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
AddDefaultCharset off
AddDefaultCharset windows-1252