如何将Apache的默认编码更改为UTF-8?

问题描述 投票:132回答:12

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

如果服务器是Apache,是否可以将UTF-8设置为默认值?

更新:另外,我发现它实际上使用的是HTML 3.2的DOCTYPE,因此根本没有字符集...因此它没有设置任何编码。但是有没有办法将其更改为使用UTF-8?

apache character-encoding apache-config
12个回答
166
投票

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

AddDefaultCharset utf-8

2
投票

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


1
投票

只需将其留空:'default_charset' in WHM :::::: default_charset =''


0
投票

就我而言,添加到.htaccess


52
投票

将此添加到您的.htaccess

IndexOptions +Charset=UTF-8

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

AddDefaultCharset UTF-8

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


24
投票

请参见AddDefaultCharset DirectiveAddCharset Directivethis article

AddDefaultCharset utf-8

但是我必须使用汉字不时地。以前,我翻译过汉字转Unicode码和使用将其包括在文档中&#骇客。但这仅对包含几个字符的页面。

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

conf/httpd.conf

AddCharset UTF-8 .utf8

因此,如果您有一个文件,名称以.html.utf8结尾,apache将提供页面,就像在页面中进行编码一样UTF-8,并将适当的转储字符编码指令标头。


22
投票

在.htaccess中添加此行:

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

这是针对那些无法访问其服务器的conf文件的用户。当其他尝试失败时,再尝试另一件事。

关于与.htaccess的使用有关的性能问题,我还没有看到。无论有没有.htaccess,我的典型页面加载时间都是150-200 mS]

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


21
投票

AddDefaultCharset UTF-8放入/etc/apache2/conf.d/charset。实际上,它已经存在。您只需要通过删除前面的#来取消注释即可。


8
投票

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


7
投票

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


7
投票

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


2
投票

所有HTML文件都位于UTF-8中,并且没有内容类型的元标记的地方,我只能通过添加两个指令来设置这些文件的默认值,这些默认值将由Apache 2.4发送:

© www.soinside.com 2019 - 2024. All rights reserved.