Jeu de caractères non spécifié dans l'erreur des en-têtes HTTP


15

Lors du test de cette page avec Page Speed, j'obtiens l' Specify a character seterreur:

The following resources have no character set specified in their HTTP headers. Specifying a character set in HTTP headers can speed up browser rendering.

La Content-Typebalise est présente et la page a également été enregistrée avec le codage UTF-8, alors d'où vient l'erreur?


où en apache? quel répertoire?

Réponses:


19

Il s'agit des en- têtes de réponse et non du corps du document ("balise Content-Type").

Si vous vérifiez les en-têtes de réponse de votre page avec un débogueur HTTP (par exemple, le panneau Net de Firebug pour Firefox ou un onglet similaire des outils de développement dans Google Chrome / Internet Explorer / Safari / Opera), vous verrez cette ligne:

Content-Type: text/html

En même temps, si vous cochez la même chose pour cette page, vous verrez:

Content-Type: text/html; charset=utf-8

Page Speed ​​fait référence à la partie manquante. La présence d'un jeu de caractères correct dans les en-têtes accélérera en effet un peu le rendu de la page . Avec un jeu de caractères incorrect spécifié dans l'en-tête de réponse (ou aucun jeu de caractères du tout), le navigateur doit analyser / interpréter la page jusqu'à ce qu'il trouve la déclaration de jeu de caractères correcte (la <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />ligne), puis relancer le processus de rendu si le jeu de caractères est différent de celui du navigateur. Paramètres par défaut.

La pénalité de performance n'est pas grande du tout - pour l'utilisateur, elle est imperceptible à moins qu'un matériel vraiment ancien / lent soit utilisé (bien qu'il diffère pour chaque navigateur et version de navigateur). Peut-être y a-t-il d'autres «sanctions» qui sont directement liées à cela, mais je ne les connais pas personnellement.

Correction: si vous générez cet en-tête vous-même (dans votre script PHP), vous devez le modifier pour inclure également charset. Si votre script ne fait pas de telles manipulations d'en-tête, il s'agit d'un problème de mauvaise configuration du serveur.


Je viens d'ajouter header('Content-type: text/html; charset=UTF-8');. Merci beaucoup!
Alex

6
Vous pouvez également afficher les en-têtes de réponse avec curl --head $url. Le jeu de caractères par défaut peut être spécifié dans Apache en l'ajoutant AddDefaultCharset utf-8à un fichier de configuration tel que .htaccess.
Lri

+1 pour une explication claire, se le demandait souvent et était confus. Résolu avec l'ajout de htaccess AddDefaultCharset
Malachi

Ça ne devrait pas <meta charset="utf+8">suffire?
Daniel Springer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.