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?
Dans httpd.conf, ajoutez (ou modifiez-le s'il existe déjà):
AddDefaultCharset utf-8
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.)
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.
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.
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.
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:
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.
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
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
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).
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