Bonjour à tous,

J'ai mis en ligne mon site en html5 avec comme en-tête :
<!DOCTYPE html>
	<html lang="fr">
		<head>
        <meta charset="utf-8" />
[...]

Seulement les caractères accentués sont remplacés.

Si je mets cette ligne en plus
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Tout va bien, c'est très lisible, mais W3C détecte une erreur ! Smiley decu
a écrit :
ANGLAIS : Sorry, I am unable to validate this document because on line 16 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication.
The error was: utf8 "\xE9" does not map to Unicode

FRANCAIS : Désolé, je ne suis pas en mesure de valider ce document parce que sur la l[b]igne 16 il contenait un ou plusieurs octets que je ne peux pas interpréter comme utf-8 (en d'autres termes, les octets constatées ne sont pas des valeurs valides dans l'encodage des caractères spécifié). S'il vous plaît vérifier à la fois le contenu du fichier et l'indication de codage de caractères.
L'erreur était: utf8 "\ XE9" ne correspond pas à Unicode[/i]

Maintenant est de savoir dans quel fichier est la "[i]ligne 16[/b]"

Y a-t-il un moyen de remédier à ce problème parce que franchement, je suis dépassé ?

Merci de vos réponses... et de vos solutions ! Smiley biggrin
Modifié par 6l20 (04 Jul 2013 - 10:56)
Hello,

Mauvais forum, il aurait fallu poster dans formats et encodages.

Ces problèmes d'encodage sont plutôt classiques. Il est très important que tous tes fichiers et tous tes accès à des ressources externes (bases de données, autres sites via des API, etc.) soit cohérents dans l'encodage utilisé, du début à la fin. En clair, tu dois soit tout avoir en UTF-8, soit tout en ISO-8859-1, mais surtout pas un mélange.

IL ne suffit pas d'indiquer UTF-8dans les en-têtes HTTP ou dans les meta pour que tout soit converti en UTF-8 comme par magie, il faut vraiment que les fichiers soient encodés en UTF-8 pour que ça marche.

Ici, visiblement, tes fichiers sont toujours encodés en ISO-8859-1, d'où le problème. Voici quelques pistes pour t'aider à trouver les erreurs et les convertir correctement :

1 - Bien vérifier dans l'éditeur que tu utilises que UTF-8 est bien sélectionné comme encodage pour tes fichiers. Cette option se trouve dans le menu format, dans les informations/paramètres du fichier (fichier>informations ou fichier>paramètres), dans les options/paramètres/préférences générales (outils>options ou édition>préférences), ou dans la barre de statut en bas de l'écran. IL est possible que ce soit un peu caché parce qu'une fois que c'est configuré, on n'y touche généralement plus. Si ton éditeur n'a pas ce genre d'option, change d'éditeur !

2 - Si tu es sous linux, les commandes file pour déterminer l'encodage d'un fichier et iconv pour convertir pourront t'être utiles. Il existe un équivalent d'iconv pour windows, sinon j'ai programmé moi-même un petit utilitaire de détection/conversion d'encodage en ligne de commande pour windows.

3 - Si tu utilises une base de donnée MySQL, il faut aussi indiquer qu'UTF-8 doit être utilisé pour la connexion. Il faut envoyer la commande set names utf8 (tu l'envoies comme si c'était une requête). En bonus, bien vérifier que tes données sont bien stockés en UTF-8 dans tes tables pour éviter des conversions inutiles et pour réellement profiter des possibilités offertes par UTF-8. Cf. la doc de MySQL pour savoir comment faire.

Voilà; j'espère qu'avec tout ça, tu trouveras où est le problème. Ce n'est pas toujours facile de débusquer les erreurs d'encodage, parce que ça peut être n'importe quoi au milieu de la chaîne et on a vite fait d'empirer la situation au lieu de réellement corriger le problème.
Merci beaucoup Quentin, tes explications sont limpides. Smiley biggrin

Comme tu le soulignes si bien, c'est peut-être à cause de l'éditeur.
Comme j'utilise Webexpert depuis longtemps, c'est certainement dans ses paramètres, ou ailleurs, mais je vais voir ça de plus près.

Encore merci beaucoup.

Bonne journée.
QuentinC a écrit :
1 - Bien vérifier dans l'éditeur que tu utilises que UTF-8 est bien sélectionné comme encodage pour tes fichiers.

Désolé de te déranger encore Quentin, mais là, je suis vraiment largué malgré tes bonnes explications.

Voilà, j'ai paramétré l'éditeur Webexpert en UTF-8 et tout va bien en local.
Donc, voyant cela, j'ai transféré les fichiers.
Seulement, j'ai exactement le même problème qu'avant. Smiley decu
Ce que je comprends pas, c'est que tout est nickel en local !!! Smiley biggrin

Est-ce que j'ai oublié ou mal fait quelque chose ?

PS : si je n'ai pas mis ce msg dans le bon forum, c'est pour suivre avec mes anciens posts.
Bonjour,


Aurais-tu une page en ligne que l'on puisse y regarder de plus près ?
As-tu une option d'encodage UTF-8 sans BOM dans ton éditeur ? Si oui, tentes de ré-encoder avec ces paramètres.
a écrit :
Est-ce que j'ai oublié ou mal fait quelque chose ?

Difficile à dire. le gros problème avec les bugs d'encodage, c'est que ça peut venir d'un tout petit rien, et deux erreurs peuvent parfois se compenser. C'est extrêmement sensible.

Si ça marche en local mais pas en ligne, c'est qu'il subsiste encore une différence quelque part entre les deux. De nouveau, ça peut être vraiment n'importe quoi, alors le mieux est de tout vérifier et comparer couche par couche, élément par élément: encodage dans les tables (collation), encodage de la connexion à la base de donnée, encodage des connexions aux API, encodage des fichiers stockés sur le serveur, en-têtes HTTP envoyés par le serveur (Content-Type), indications d'encodage explicite dans les fichiers (balises meta en HTML, @charset en CSS, prologue en XML, etc.). Le plus dur est bien sûr de ne rien oublier. ON finit forcément par trouver si on réussit à rester méthodique du début à la fin.

C'est difficile de donner des indices plus précis que ça malheureusement... justement parce que ça peut être n'importe quel maillon de la châine. C'est vraiment du cas par cas, et poster 1000 lignes de code sur un forum n'aiderait probablement même pas beaucoup.