Comment changer L'encodage par défaut en UTF-8 pour Apache?

J'utilise une société d'hébergement et il listera les fichiers dans un répertoire si le fichier index.html n'est pas là, il utilise iso-8859-1 comme encodage par défaut.

Si le serveur est Apache, existe-t-il un moyen de définir UTF-8 par défaut à la place?

Update: de plus, j'ai découvert qu'il utilise réellement un DOCTYPE de HTML 3.2 et qu'il n'y a pas de charset du tout... donc, c'est de ne pas fixer n'importe quel encodage. Mais existe-t-il un moyen de le changer pour utiliser UTF-8?

124
demandé sur zero8 2009-05-27 08:04:02

11 réponses

Dans httpd.conf ajouter (ou changer si elle est déjà là):

AddDefaultCharset utf-8
155
répondu MartinodF 2009-05-27 04:11:25

Ajoutez ceci à votre .htaccess:

IndexOptions +Charset=UTF-8

Ou, si vous avez des droits d'administrateur, vous pouvez le définir globalement en modifiant httpd.conf et en ajoutant:

AddDefaultCharset UTF-8

(Vous pouvez également utiliser AddDefaultCharset dans .htaccess, mais cela n'affectera pas les listes de répertoires générées par Apache de cette façon.)

47
répondu Mathias Bynens 2012-06-07 06:44:40

Voir AddDefaultCharset Directive, AddCharset la Directive, et cet article.

AddDefaultCharset utf-8

Mais je dois utiliser des caractères chinois maintenant et puis. Auparavant, j'ai traduit Caractères chinois au code Unicode et incluez - le dans le document en utilisant le &# hack. Mais il est seulement utile pour page ayant quelques caractères.

Il y a une meilleure façon de le faire: encoder les informations du jeu de caractères dans le nom de fichier, et apache affichera le en-tête de codage approprié basé sur cela. Ceci est possible grâce à la AddCharset lignes dans le fichier conf, comme la ligne ci-dessous:

conf/httpd.conf:

AddCharset UTF-8 .utf8

Donc si vous avez un fichier dont les noms se terminent par .html.utf8, apache servir la page comme si elle était encodée dans UTF-8 et va vider le bon directive de codage de caractères dans le tête conséquence.

24
répondu Eugene Yokota 2009-05-27 05:38:54

Placez AddDefaultCharset UTF-8 dans /etc/apache2/conf.d/charset. En fait, elle est déjà là. Il vous suffit de le décommenter en supprimant le # précédent.

20
répondu Bjartur Thorlacius 2013-03-06 17:08:23

Dans .htaccess ajouter cette ligne:

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

Ceci est pour ceux qui n'ont pas accès au fichier conf de leur serveur. C'est juste une chose de plus à essayer lorsque d'autres tentatives ont échoué.

En ce qui concerne les problèmes de performance concernant l'utilisation de .htaccess Je ne l'ai pas vu cela. Mes temps de chargement de page typiques sont 150-200 mS avec ou sans .htaccess

À quoi sert la performance si votre page ne s'affiche pas correctement. La plupart des serveurs partagés ne permettent pas à l'utilisateur d'accéder au fichier de configuration qui est l'endroit préféré pour ajouter un jeu de caractères.

19
répondu Misunderstood 2018-03-06 19:58:10

Je ne suis pas sûr si vous avez accès à la configuration Apache (httpd.conf) mais vous devriez pouvoir définir une Directive AddDefaultCharset. Voir:

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

Recherchez le mod_mime.c module et assurez-vous que ce qui suit est défini:

AddDefaultCharset utf-8 

Ou L'équivalent Apache 1.x docs ( http://httpd.apache.org/docs/1.3/mod/core.html#adddefaultcharset).

Cependant, cela ne fonctionne que lorsque " le type de contenu de la réponse est texte / brut ou texte / html".

Vous devez également vous assurer que vos pages ont également un jeu de caractères. Voir ceci pour plus d'informations:

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

8
répondu Jon 2009-05-27 06:24:54

Ceci n'est pas testé mais fonctionnera probablement.

Dans votre .fichier htaccess mettre:

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

Cependant, cela nécessitera mod_headers sur le serveur.

6
répondu MiffTheFox 2014-05-24 13:15:32

Pour être complet, sur Apache2 sur Ubuntu, vous trouverez le jeu de caractères par défaut dans charset.conf in conf-disponible.

Décommenter la ligne

AddDefaultCharset UTF-8
6
répondu David Glance 2014-08-26 00:27:34

Où tous les fichiers HTML sont en UTF-8 et n'ont pas de balises meta pour le type de contenu, j'ai seulement pu définir la valeur par défaut nécessaire pour que ces fichiers soient envoyés par Apache 2.4 en ajoutant les deux directives:

AddLanguage ru .html
AddCharset UTF-8 .html
2
répondu Alex 2014-12-11 08:48:46

Juste un indice si vous avez de longs noms de fichiers en utf-8: par défaut, ils seront raccourcis à 20 octets, il peut donc arriver que le dernier caractère soit "coupé en deux" et donc non reconnu correctement. Ensuite, vous pouvez définir ce qui suit:

IndexOptions Charset=UTF-8 NameWidth=*

NameWidth le réglage empêchera de raccourcir vos noms de fichiers, les rendant correctement affichés et lisibles.

, Comme d'autres utilisateurs déjà mentionné, cela devrait être ajouté dans httpd.conf ou apache2.conf (si vous avez des droits d'administrateur) ou dans .htaccess (Si vous ne le faites pas).

2
répondu pstryk 2016-05-03 20:40:01

Laissez-le vide: 'default_charset' in WHM :::::: default_charset =''

P. S. - dans WHM go - - - - - - - -) accueil "Configuration du Service" éditeur de Configuration PHP - - - -) cliquez sur 'Mode Avancé' - - - -) trouvez 'default_charset' et laissez-le vide - - - - juste rien, pas utf8, pas ISO

1
répondu grrow 2016-11-05 10:29:50