Bonjour,

j'ai un vieux site qui bien que sous PHP 7 est en iso-8859-1.
Ce serait trop de boulot de le convertir en UTF-8.
Tous les scripts PHP commencent donc par :

header ('Content-Type: text/html; charset=ISO-8859-1');

A la base, le site en XHTML script :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
etc.

Et tout va bien...

Si je veux passer en html 5

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="iso-8859-1" />
etc.

Les pages s'affichent très bien mais le validateur du W3C me crache une série d'erreurs.

Warning: Using windows-1252 instead of the declared encoding iso-8859-1.
Warning: Legacy encoding windows-1252 used. Documents should use UTF-8.
Error: Bad value iso-8859-1 for attribute charset on element meta: iso-8859-1 is not a preferred encoding name. The preferred label for this encoding is windows-1252.

Je peux rester en XHTML mais voyez-vous comment je pourrais passer en HTML 5 sans me prendre tous ces messages d'erreur ?

Merci d'avance.
windows-1252 est une modification de iso-8859-1 qui remplace certains caractères de contrôles qui ne servent plus à rien (utilisés autrefois par certains appareils, principalement des imprimantes) par des symboles utiles: € ou œ par exemple.

De fait iso-8859-1 ne fait plus partie de la liste d'encodages que les navigateurs sont censés supporter, c'est windows-1252 désormais. => https://encoding.spec.whatwg.org/#names-and-labels

Utilisez donc cet encodage. Dans vos en-têtes et dans la balise meta.
Modifié par kustolovic (14 Jan 2018 - 21:58)
Bonjour,

Merci, de ta réponse.

Quand je vois marqué Windows je m'attends à une montage de bugs...

Je vais essayer cet encodage, je te tiens informé.
Merci pour billet.

Autrement après :
<meta charset="windows-1252" />

Il me reste une seule erreur :
Error 3 29 Internal encoding declaration “windows-1252” disagrees with the actual encoding of the document (“utf-8”)

Qu'est-ce qui est encodé UTF-8 ? Je me le demande... Le script ?

Pas le temps de voir ce soir mais je reviens vers vous.
Modifié par boteha_2 (14 Jan 2018 - 22:18)
Bonjour,

boteha_2 a écrit :

Il me reste une seule erreur :
Error 3 29 Internal encoding declaration “windows-1252” disagrees with the actual encoding of the document (“utf-8”)


J'ai vérifié avec Norepad++, mes scripts sont enregistrés en ANSI avec retours à la ligne Windows.

Où le validateur du W3C trouve-t-il un encodage UTF-8 ?
Je rappelle que le site est en PHP 7.2.
Bonjour,

boteha_2 a écrit :
Où le validateur du W3C trouve-t-il un encodage UTF-8 ?
Je rappelle que le site est en PHP 7.2.


Le charset peut éventuellement être imposé par le serveur quelque soit le contenu des pages. Le charset peut aussi être imposé via une directive dans un .htaccess. Juste des hypothèses à vérifier.

Amicalement,
Bonjour,

Tous les scripts PHP commencent par :

header ('Content-Type: text/html; charset=ISO-8859-1');

Peut-êlre là aussi faut-il mettre windows-1252 ?

Il n'y a rien dans le htaccess, il me semble que PHP 7.2 est en UTF-8 par défaut.

Pour les tests, j'utilise la console Firefiox avec html-validator ou le test W3C public.

Une URL à tester sur le site de développement, celui en production est encore en XHTML.
L'URL donne bien l'erreur suivante:

Using windows-1252 instead of the declared encoding iso-8859-1.

Il faut envoyer windows-1252 dans l'en-tête aussi (et surtout en fait, l'en-tête écrase la balise meta)

Le message UTF-8 vient peut-être de l'extension, certaines envoient en utf-8 au validateur (c'est ballot, oui)
Bonjour,

Je découvre seulement maintenant ta réponse, je n'ai pas reçu la notification par mail.

Je vais donc essayer au niveau du PHP :

header ('Content-Type: text/html; charset=windows-1252');

Je vous tiens informés dès que c'est fait.

Autrement, de quelle extension parles-tu ?
Bonjour,

Dans PHP :
header ('Content-Type: text/html; charset=windows-1252');

Dans HTML :
<meta charset="windows-1252" />

Je me prends toujours le même warning du W3C :

Warning: Legacy encoding windows-1252 used. Documents should use UTF-8.

Pas un drame mais un peu énervant.