¿Cómo cambiar la codificación predeterminada a UTF-8 para Apache?


Estoy usando una compañía de alojamiento y listará los archivos en un directorio si el archivo index.html no está allí ,usa iso-8859-1 como codificación predeterminada.

Si el servidor es Apache, ¿hay alguna forma de establecer UTF-8 como el valor predeterminado?

Actualización: Además me enteré de que en realidad está utilizando un DOCTYPE de HTML 3.2 y luego no hay charset en absoluto... por lo tanto, no está configurando ninguna codificación. Pero, ¿hay alguna forma de cambiarlo para usar UTF-8?

Author: zero8, 2009-05-27

11 answers

En httpd.conf add (o cambiar si ya está allí):

AddDefaultCharset utf-8
 155
Author: MartinodF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-27 04:11:25

Añade esto a tu .htaccess:

IndexOptions +Charset=UTF-8

O, si tiene derechos de administrador, puede configurarlo globalmente editando httpd.conf y agregando:

AddDefaultCharset UTF-8

(Puede usar AddDefaultCharset en .htaccess también, pero no afectará a los listados de directorios generados por Apache de esa manera.)

 47
Author: Mathias Bynens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 06:44:40

Ver Directiva AddDefaultCharset, AddCharset Directiva , y este artículo.

AddDefaultCharset utf-8

Pero tengo que usar caracteres chinos de vez en cuando. Anteriormente, traduje Caracteres chinos al código Unicode y incluirlo en el documento utilizando el &# hack. Pero solo es útil para página con algunos caracteres.

Hay una mejor manera de hacer eso: codificar la información del conjunto de caracteres en el nombre de fichero, y apache cabecera de codificación adecuada basada en eso. Esto es posible gracias a la AddCharset líneas en el archivo conf, como la línea de abajo:

conf/httpd.conf:

AddCharset UTF-8 .utf8

Así que si usted tiene un archivo cuya nombres termina en .html.utf8, apache servir la página como si estuviera codificada en UTF-8 y volcará el adecuado directiva de codificación de caracteres en el cabecera en consecuencia.

 24
Author: Eugene Yokota,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-27 05:38:54

Coloque AddDefaultCharset UTF-8 en /etc/apache2/conf.d/charset. De hecho, ya está ahí. Solo tienes que descomentarlo eliminando el anterior #.

 20
Author: Bjartur Thorlacius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-06 17:08:23

In .htaccess añadir esta línea:

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

Esto es para aquellos que no tienen acceso al archivo conf de su servidor. Es solo una cosa más que intentar cuando otros intentos fallaron.

En cuanto a los problemas de rendimiento relacionados con el uso de .htaccess No he visto esto. Mis tiempos de carga de página típicos son 150-200 mS con o sin .htaccess

Lo bueno es el rendimiento si su página no se renderiza correctamente. La mayoría de los servidores compartidos no permiten el acceso del usuario al archivo de configuración que es el lugar preferido para agregar un conjunto de caracteres.

 19
Author: Misunderstood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 19:58:10

No estoy seguro de si tiene acceso a la configuración de Apache (httpd.conf) pero debería ser capaz de establecer una Directiva AddDefaultCharset. Véase:

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

Busca el mod_mime.módulo c y asegúrese de que se establece lo siguiente:

AddDefaultCharset utf-8 

O el equivalente Apache 1.x docs ( http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset).

Sin embargo, esto solo funciona cuando " el tipo de contenido de la respuesta es text / plain o text / html".

También debe asegurarse de que sus páginas tengan un conjunto de caracteres también. Vea esto para más información:

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

 8
Author: Jon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-27 06:24:54

Esto no está probado, pero probablemente funcionará.

En su .archivo htaccess put:

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

Sin embargo, esto requerirá mod_headers en el servidor.

 6
Author: MiffTheFox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-24 13:15:32

Para completar, en Apache2 en Ubuntu, encontrará el conjunto de caracteres predeterminado en charset.conf en conf-disponible.

Descomentar la línea

AddDefaultCharset UTF-8
 6
Author: David Glance,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-26 00:27:34

Donde todos los archivos HTML están en UTF-8 y no tienen meta etiquetas para el tipo de contenido, solo pude establecer el valor predeterminado necesario para que estos archivos sean enviados por Apache 2.4 agregando ambas directivas:

AddLanguage ru .html
AddCharset UTF-8 .html
 2
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-11 08:48:46

Solo una sugerencia si tiene nombres de archivo largos en utf-8: por defecto se acortarán a 20 bytes, por lo que puede ocurrir que el último carácter se "corte por la mitad" y por lo tanto no se reconozca correctamente. Entonces es posible que desee establecer lo siguiente:

IndexOptions Charset=UTF-8 NameWidth=*

NameWidth la configuración evitará acortar los nombres de los archivos, haciéndolos correctamente mostrados y legibles.

Como otros usuarios ya mencionados, esto debe agregarse en httpd.conf o apache2.conf (si tiene derechos de administrador) o en .htaccess (si no lo haces).

 2
Author: pstryk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-03 20:40:01

Simplemente déjalo vacío: 'default_charset' in WHM :::::: default_charset =''

P. s.-In WHM go --------) Home "Service Configuration "PHP Configuration Editor - - - -) click 'Advanced Mode' - - - -) find 'default_charset' and leave it blank - - - - just nothing, not utf8, not ISO

 1
Author: grrow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-05 10:29:50