web-dev-qa-db-fra.com

Comment définir le codage de caractères sur UTF-8 pour default.html?

J'ai passé les dernières heures à faire valider HTML 4.01 Strict sur mon site Web, ce que j'ai réussi à faire, mais il reste un avertissement dont je ne peux pas me débarrasser. L'avertissement est:

Caractère incompatibilité de codage!

Le codage de caractères spécifié dans l'en-tête HTTP (iso-8859-1) est différent de la valeur de l'élément (utf-8). J'utiliserai la valeur de l'en-tête HTTP (iso-8859-1) pour cette validation.

La page en question est www.dubiousarray.net/default.html . Comme vous pouvez le voir dans la source de la page, j'ai le méta-élément suivant:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

et je me suis assuré que le fichier default.html est enregistré avec le codage UTF-8. La chose étrange est toutes les autres pages du site valident sans cet avertissement et elles ont la même balise méta et ont été enregistrées exactement de la même manière. Je suis à peu près sûr que cela a quelque chose à voir avec la configuration du serveur. Le fichier .htaccess ressemble à ceci pour le moment:

# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
AddDefaultCharset UTF-8

mais j'ai essayé tous les correctifs montrés sur cette page et aucun d'entre eux n'a fonctionné. Quelqu'un a-t-il des idées sur la manière de se débarrasser de cet avertissement? Une dernière chose, dans Firefox, si vous cliquez avec le bouton droit de la souris sur la page et sélectionnez "Afficher les informations sur la page", default.html s'affiche sous la forme ISO-8859-1, tandis que toutes les autres pages affichent UTF-8.

Merci Jacob

EDIT: Autre chose à noter: tous les fichiers html ont été créés et enregistrés exactement de la même manière (codage de caractères défini sur UTF-8 sans nomenclature), mais default.html est le seul qui ne s'affiche pas sous UTF-8. . Donc, je suppose que le serveur est en train de faire quelque chose de spécial pour le fichier default.html bien que je ne sois pas sûr de ce qu’il n’ya pas de signe dans le fichier .htaccess.

16
Jacob de Lacey

Vous devez remplacer l'en-tête de niveau HTTP.

Cela devrait fonctionner:

<?php 
 header('Content-type: text/html; charset=utf-8'); 
?>

Notez que ce qui précède doit être la première chose dans votre fichier. Aucune exception. Voir http://us2.php.net/manual/en/function.header.php

Pour des informations générales sur la modification de l’en-tête du jeu de caractères dans différentes piles Web, voir http://www.w3.org/International/O-HTTP-charset

Larry

26
Larry K

Le serveur marque clairement le document comme ISO-8859-1 dans les en-têtes HTTP. Essayez d’enregistrer default.html en utilisant le codage UTF-8 avec un éditeur approprié.

2
hannson

D'accord, j'ai trouvé une solution partielle à mon problème. Comme seul le fichier default.html était à l’origine de cet avertissement, j’ai supposé que le serveur le faisait en raison de son nom. J'ai donc créé un nouveau fichier appelé home.html avec le même contenu que le fichier default.html et j'ai dirigé le fichier .htaccess vers le nouveau fichier (voir la ligne 3 ci-dessous).

# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
DirectoryIndex home.html
AddDefaultCharset UTF-8

Cela a résolu le problème et tous les fichiers sont maintenant reconnus comme UTF-8. Je ne sais toujours pas ce que le serveur faisait au fichier default.html ni où se trouvaient les paramètres, mais comme mon problème a disparu, j'oublierai cela.

1
Jacob de Lacey

incluez ceci dans votre code:

<meta charset="utf-8" />

0
Charuvind Atre

Pouvez-vous supprimer AddDefaultCharset de .htaccess et vérifier le codage? J'ai sauvegardé la source HTML de votre page Web et je l'ai ouverte. Le codage a été détecté comme UTF-8. Toutefois, lors de l'affichage de la même page Web servie par votre serveur Web, le codage est ISO-8859-1. C'est pourquoi je suggère de supprimer l'ancienne règle redondante.

0