web-dev-qa-db-fra.com

Comment changer le codage par défaut en UTF-8 pour Apache?

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

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

Mise à jour: De plus, j'ai découvert qu'il utilise en réalité un DOCTYPE de HTML 3.2 et qu'il n'y a pas de jeu de caractères du tout ... donc, il ne définit aucun encodage. Mais existe-t-il un moyen de changer pour utiliser UTF-8?

129

Dans httpd.conf, ajoutez (ou modifiez-le s'il existe déjà):

AddDefaultCharset utf-8
163
MartinodF

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 aussi utiliser AddDefaultCharset dans .htaccess, mais cela n’affectera pas les listes de répertoires générées par Apache.)

49
Mathias Bynens

Voir Directive AddDefaultCharset , Directive AddCharset et cet article .

AddDefaultCharset utf-8

Mais je dois utiliser des caractères chinois de temps en temps. Auparavant, je traduisais les caractères chinois en code Unicode et les intégrais dans le document à l'aide du hack &#. Mais ce n'est utile que pour une page comportant quelques caractères.

Il existe un meilleur moyen de le faire: encoder les informations de charset dans le nom du fichier et Apache générera l'en-tête d'encodage approprié en fonction de cela. Ceci est possible grâce aux lignes AddCharset du fichier de configuration, telles que la ligne ci-dessous:

conf/httpd.conf:

AddCharset UTF-8 .utf8

Ainsi, si vous avez un fichier dont le nom se termine par .html.utf8, Apache servira la page comme si elle était codée en UTF-8 et dumpa en conséquence la directive de codage de caractères appropriée dans l'en-tête.

24
Eugene Yokota

Dans .htaccess, ajoutez cette ligne:

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

Ceci est destiné à ceux qui n'ont pas accès au fichier de configuration de leur serveur. C'est encore une chose à essayer quand d'autres tentatives ont échoué.

En ce qui concerne les problèmes de performances concernant l’utilisation de .htaccess, je ne l’ai pas vu. 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 n'autorisent pas les utilisateurs à accéder au fichier de configuration, qui constitue l'emplacement privilégié pour ajouter un jeu de caractères.

22
Misunderstood

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

21

Je ne sais pas 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 module mod_mime.c et assurez-vous que les éléments suivants sont définis:

AddDefaultCharset utf-8 

ou la documentation équivalente Apache 1.x ( http://httpd.Apache.org/docs/1.3/mod/core.html#adddefaultcharset ).

Toutefois, cela ne fonctionne que lorsque "le type de contenu de la réponse est text/plain ou text/html".

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

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

8
Jon

Ceci n'est pas testé mais fonctionnera probablement.

Dans votre fichier .htaccess, mettez:

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

Cependant, cela nécessitera mod_headers sur le serveur.

7
MiffTheFox

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

Ne commentez pas la ligne

AddDefaultCharset UTF-8
6
David Glance

Là où tous les fichiers HTML sont en UTF-8 et n'ont pas de balises méta pour le type de contenu, je n'ai pu définir la valeur par défaut requise pour que ces fichiers soient envoyés par Apache 2.4 en ajoutant les deux directives:

AddLanguage ru .html
AddCharset UTF-8 .html
2
Alex

Juste un conseil si vous avez des noms de fichiers longs dans 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 les paramètres suivants:

IndexOptions Charset=UTF-8 NameWidth=*

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

Comme d'autres utilisateurs l'ont déjà mentionné, cela devrait être ajouté soit dans httpd.conf ou Apache2.conf (si vous avez les droits d'administrateur), soit dans .htaccess (si vous n'en avez pas).

2
pstryk

Laissez simplement ce champ vide: 'default_charset' in WHM :::::: default_charset =''

p.s. - Dans WHM, allez --------) dans Accueil "Configuration du service" Éditeur de configuration PHP ----) cliquez sur 'Mode avancé' ----) recherchez 'default_charset' et laissez le champ vide ---- rien juste , pas utf8, pas ISO

1
grrow