Como alterar a codificação padrão para UTF-8 para o Apache?

votos
120

Eu estou usando uma empresa de hospedagem e ele irá listar os arquivos em um diretório se o arquivo index.htmlnão está lá, ele usa iso-8859-1 como a codificação padrão.

Se o servidor for Apache, existe uma maneira de definir UTF-8 como padrão em vez disso?

Update: Além disso, descobri que ele está realmente usando um DOCTYPE de HTML 3.2 e então não é charset em tudo ... por isso não está definindo qualquer codificação. Mas existe uma maneira de mudá-lo para usar UTF-8?

Publicado 27/05/2009 em 05:04
fonte usuário
Em outras línguas...                            


11 respostas

votos
153

Em httpd.conf adicionar (ou mudar se ele já está lá):

AddDefaultCharset utf-8
Respondeu 27/05/2009 em 05:11
fonte usuário

votos
45

Adicione isto a sua .htaccess:

IndexOptions +Charset=UTF-8

Ou, se você tem direitos de administrador, você pode configurá-lo globalmente, editando httpd.confe acrescentando:

AddDefaultCharset UTF-8

(Você pode usar AddDefaultCharsetno .htaccesstambém, mas isso não afetará as listagens de diretório Apache gerados dessa forma.)

Respondeu 07/06/2012 em 07:44
fonte usuário

votos
23

Veja Directiva AddDefaultCharset , Directiva AddCharset , e este artigo .

AddDefaultCharset utf-8

Mas eu tenho que usar caracteres chineses agora e depois. Anteriormente, eu traduzido caracteres chineses para Unicode de código e incluí-lo no documento usando o &#hack. Mas isso só é útil para páginas com alguns personagens.

Existe uma maneira melhor de fazer isso: codificar a informação charset no nome do arquivo, e apache irá imprimir o cabeçalho codificação adequada com base nisso. Isto é possível graças às AddCharsetlinhas no arquivo conf, tais como a linha abaixo:

conf/httpd.conf:

AddCharset UTF-8 .utf8

Então se você tem um arquivo cujo nome termina em .html.utf8, apache servirá a página como se ele é codificados em UTF-8 e vai despejar a directiva de codificação de caracteres adequada no cabeçalho em conformidade.

Respondeu 27/05/2009 em 05:11
fonte usuário

votos
20

Coloque AddDefaultCharset UTF-8em /etc/apache2/conf.d/charset. Na verdade, ele já está lá. Você apenas tem que descomentar-lo removendo o anterior #.

Respondeu 06/03/2013 em 17:49
fonte usuário

votos
19

Em .htaccess adicionar esta linha:

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

Isto é para aqueles que não têm acesso ao arquivo conf do seu servidor. É só mais uma coisa para tentar quando outras tentativas falharam.

Na medida em que os problemas de desempenho em relação ao uso de .htaccess eu não vi isso. Meus tempos de carregamento de página típico são 150-200 ms com ou sem .htaccess

Que bom é o desempenho se sua página não processar corretamente. A maioria dos servidores compartilhados não permitem o acesso do usuário ao arquivo de configuração que é o lugar preferido para adicionar um conjunto de caracteres.

Respondeu 12/08/2014 em 04:09
fonte usuário

votos
8

Eu não tenho certeza se você tem acesso à configuração do Apache (httpd.conf), mas você deve ser capaz de definir uma directiva AddDefaultCharset. Vejo:

http://httpd.apache.org/docs/2.0/mod/core.html

Olhe para o módulo mod_mime.c e certifique-se o seguinte está definido:

AddDefaultCharset utf-8 

ou os equivalentes docs 1.x Apache ( http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset ).

No entanto, isso só funciona quando "a resposta do tipo de conteúdo é text / plain ou text / html".

Você também deve se certificar de que suas páginas têm um charset definido também. Veja este para mais informações:

http://www.w3.org/TR/REC-html40/charset.html

Respondeu 27/05/2009 em 05:12
fonte usuário

votos
6

Para completar, no Apache2 no Ubuntu, você vai encontrar o conjunto de caracteres padrão no charset.conf em conf-disponível.

Descomente a linha

AddDefaultCharset UTF-8
Respondeu 26/08/2014 em 01:27
fonte usuário

votos
6

Este não foi testado, mas provavelmente vai funcionar.

Em sua put arquivo .htaccess:

<Files ~ "\.html?$">  
     Header set Content-Type "text/html; charset=utf-8"
</Files>

No entanto, isso exigirá mod_headers no servidor.

Respondeu 27/05/2009 em 05:09
fonte usuário

votos
2

Apenas uma dica, se você tem nomes de arquivos longos em utf-8: por padrão, eles serão encurtados para 20 bytes, por isso, pode acontecer que o último caractere pode ser "cortado ao meio" e, portanto, não reconhecido corretamente. Então você pode querer definir o seguinte:

IndexOptions Charset=UTF-8 NameWidth=*

NameWidth definição impede que encurtar seus nomes de arquivos, tornando-os adequadamente exibido e legível.

Como outros usuários já mencionadas, este deve ser adicionado em httpd.confou apache2.conf(se você tem direitos de administrador) ou em.htaccess (se você não).

Respondeu 03/05/2016 em 20:40
fonte usuário

votos
2

Onde todos os arquivos HTML estão em UTF-8 e não têm meta tags para o tipo de conteúdo, eu só foi capaz de definir o padrão necessário para esses arquivos a serem enviados pelo Apache 2.4, adicionando ambas as directivas:

AddLanguage ru .html
AddCharset UTF-8 .html
Respondeu 11/12/2014 em 07:59
fonte usuário

votos
1

Basta deixá-lo vazio: 'default_charset' in WHM :::::: default_charset =''

ps - Em WHM ir --------) Configuração Home »Serviços» PHP Editor de configuração ----) clique em 'Modo Avançado' ----) encontrar 'default_charset' e deixá-lo em branco ---- apenas nada, nem utf8, não ISO

Respondeu 04/11/2016 em 09:55
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more