L'agent (navigateur Web) utilise un algorithme pour déterminer quel encodage de caractère doit être utilisé pour restituer correctement la ressource de type texte transmise via HTTP par le serveur web. L'algorithme tient compte notamment:
Pour des documents HTML, la bonne pratique consiste à systématiquement:
Il est possible de modifier la configuration du serveur Apache pour qu'il modifie les entete
Le problème a été rencontré lors du portage d'anciens scripts sur un serveur récent. Les scripts PHP utilisaient le charset ISO-8859-1 mais le serveur PHP-FPM était configuré pour utiliser par défaut le jeu de caractères UTF-8 (via le fichier /etc/php/5.6/fpm/php.ini). Lors de l’exécution des scripts l’entête de la réponse HTTP était modifiée par le serveur PHP-FPM qui forçait la valeur de Content-Type:
Content-Type: text/html; charset=UTF-8
Le jeu de caractère UTF-8 était alors utilisé par l'agent en lieu et place du jeu de caractère correct ISO-8859-1.