151 votes

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

J'utilise une compagnie d'hébergement et elle 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 comme valeur par défaut ?

J'ai découvert qu'il utilise en fait un DOCTYPE de HTML 3.2 et qu'il n'y a donc pas de charset ... donc il ne définit aucun encodage. Mais y a-t-il un moyen de le changer pour utiliser UTF-8 ?

0 votes

Cette question est très ancienne mais actuellement (en 2021), du moins dans mon cas (Debian 10), les caractères utf-8 sont servis correctement et il semble qu'il ne soit pas nécessaire de décommenter ou de modifier le paramètre AddDefaultCharset en utf-8 (sur Debian, c'est en /etc/apache2/conf-available/charset.conf ).

191voto

MartinodF Points 4213

Dans httpd.conf, ajoutez (ou changez si c'est déjà là) :

AddDefaultCharset utf-8

6 votes

Où dans le fichier doit-on ajouter ceci, n'importe où ?

5 votes

@Geoffrey oui. si elle n'est pas déjà là, vous pouvez la mettre n'importe où. cependant, j'ai l'habitude de mettre chaque directive "personnalisée" au bas du fichier pour un certain nombre de raisons (remplacement de directives préexistantes, ordre, et simplement pour voir facilement ce que j'ai changé par rapport à la configuration de base).

6 votes

Ajoutez AddDefaultCharset utf-8 au fichier .htaccess - cela a marché à merveille pour moi. (si vous n'avez pas accès à httpd.conf)

62voto

Mathias Bynens Points 41065

Ajoutez ceci à votre .htaccess :

IndexOptions +Charset=UTF-8

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

AddDefaultCharset UTF-8

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

4 votes

C'est une excellente solution et moins invasive que la modification du fichier httpd.conf.

1 votes

Sur mon serveur, le .htaccess peut aussi affecter tous les sous-répertoires, probablement qu'Apache cherchera tout .htaccess en remontant le répertoire parent jusqu'au répertoire racine du dossier du site web.

2 votes

Oui, c'est comme ça .htaccess fonctionne sur tous les serveurs - elle affecte également tous les sous-répertoires. Cependant, les pages de listes de répertoires générées par Apache ne peuvent pas être forcées en UTF-8 en utilisant la commande .htaccess (AFAIK).

31voto

Eugene Yokota Points 43213

Voir Directive AddDefaultCharset , Directive AddCharset y 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 inclure dans le document en utilisant le &# pirate. Mais il n'est utile que pour page ayant peu de caractères.

Il y a un meilleur moyen de le faire : coder l'information sur le jeu de caractères dans le et apache affichera le nom de fichier l'en-tête de codage approprié en fonction de cela. Ceci est possible grâce à la fonction 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 noms se terminent par .html.utf8 , apache va servira la page comme si elle était codée en UTF-8 et transmettra le bon appropriée dans l'en-tête en conséquence.

28voto

Misunderstood Points 33

Dans le dossier .htaccess ajoutez cette ligne :

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

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

En ce qui concerne les problèmes de performance liés à l'utilisation du fichier .htaccess Je n'ai pas vu cela. Le temps de chargement de mes pages est généralement de 150 à 200 ms, avec ou sans fichier. .htaccess .

À quoi servent les performances si votre page ne s'affiche pas correctement ? La plupart des serveurs partagés ne permettent pas aux utilisateurs d'accéder au fichier de configuration, qui est l'endroit idéal pour ajouter un jeu de caractères.

0 votes

Je ne peux pas l'expliquer, mais seule cette solution fonctionne pour moi. C'est pourquoi un grand +1

1 votes

Comme l'a mentionné @Robbert plus tôt, si vous n'utilisez pas déjà l'option .htaccess les dossiers, ne commencez pas maintenant. Il y a des raisons de performance et d'administration pour lesquelles c'est une mauvaise idée.

0 votes

Lorsque vous n'incluez pas les extensions, AddCharset est appliqué aux types de contenu text/html et text/plain.

25voto

Sur Ubuntu 12.04, il suffit de décommenter la ligne AddDefaultCharset UTF-8 sur /etc/apache2/conf.d/charset . Si vous utilisez Apache en amont, le fichier peut s'appeler httpd.conf, et vous devrez peut-être insérer la ligne.

4 votes

Il n'existe pas de fichier tel que /etc/apache2/conf.d/charset . Il s'agit d'un fichier include personnalisé par votre distribution. Comme tout autre fichier qui n'est pas httpd.conf .

3 votes

Son /etc/apache2/conf-enabled/charset.conf sur ma distribution (Ubuntu 16.4) et ne fonctionne pas non plus.

0 votes

Pouvez-vous mettez à jour votre réponse par exemple, avec des informations sur la distribution de Linux, y compris la version. Par exemple, quelle était la distribution et la version originales de Linux ? (Mais sin "Editer :", "Mettre à jour :", ou similaire - la réponse doit apparaître comme si elle avait été écrite aujourd'hui).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X