J'ai une page HTML qui annonce correctement (l'encodage du physique sur le disque) annonce son Content-Type :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8">
<title> ...
L'ouverture du fichier à partir du disque dans le navigateur (Google Chrome, Firefox) fonctionne bien.
En le demandant via HTTP, le serveur Web envoie un en-tête Content-Type différent:
$ curl -I http://example.com/file.html
HTTP/1.1 200 OK
Date: Fri, 19 Oct 2012 10:57:13 GMT
...
Content-Type: text/html; charset=ISO-8859-1
(voir dernière ligne). Le navigateur utilise ensuite ISO-8859-1 pour afficher ce qui est un résultat indésirable.
Existe-t-il un moyen courant de remplacer les en-têtes de serveur envoyés au navigateur depuis le document HTML?
;charset=...
-tête http. Le site fonctionne très bien avecContent-Type: text/html
, différents fichiers ont des encodages différents sur le serveur. (Je crains que ce ne soit pas possible aussi, car je pense que je l'ai cherché il y a quelques semaines mais le résultat n'était pas tout à fait définitif). Juste au cas où vous pourriez faire la lumière juste devant.Vous devez définir quelque chose comme ça dans votre racine .htaccess
la source
Non, ce n'est pas possible depuis le HTML. L'en-tête de réponse du serveur a priorité sur la méta-balise du document. Comme spécifié en 5.2.2 Spécification de l'encodage des caractères - Spécification HTML 4.01 :
Cela nécessite donc une configuration côté serveur. Cependant, comme le chapitre continue:
Dans mon cas, l'en - tête Content-Type du serveur contient le bon type MIME mais le mauvais jeu de caractères .
Il s'est avéré que ma configuration Apache httpd avait
AddDefaultCharset
activé la fonction qui ajoutait la; charset=ISO-8859-1
pièce. Placer dans le répertoire racine des sites Web.htaccess
la ligne suivante:les informations de jeu de caractères ont été supprimées:
(voir dernière ligne, aucune
; charset=...
partie). Ceci, en combinaison avec la méta-balise html, déclenche l'heuristique dudit navigateur pour reprendre le jeu de caractères de la méta-balise. Le site Web est correctement décodé.Testé avec:
Ces trois navigateurs ont eu des problèmes avec la configuration d'origine et fonctionnent maintenant (tous sur Fedora 17).
N'a pas eu le problème en premier lieu. Les deux préféraient UTF-8 de la méta-étiquette au paramètre ISO-8859-1 du serveur.
Ne prend pas en charge UTF-8 et choisit donc toujours Western (Latin1) quels que soient les paramètres du serveur et la balise META.
la source
En plus de ce qui a été dit ici, j'essaierais d'utiliser le même jeu de caractères dans toutes les pages - de préférence
UTF-8
(mais si presque tout estiso-8859-1
, utilisez-le).Pour vérifier rapidement le jeu de caractères d'un fichier, vous pouvez essayer:
Pour vérifier le jeu de caractères de tous les fichiers de l'arborescence, vous pouvez essayer:
ou (en appelant la
file
commande une seule fois):Pour obtenir un résumé, utilisez l'
-b
option de lafile
commande (pour omettre les noms de fichiers) et dirigez le résultat verssort | uniq -c
.la source