Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

charset, encore !

4 réponses
Avatar
AlainL
Bonjour,
J'ai utilisé un générateur de formulaires de ge-net . Mon formulaire
fonctionne mais la partie en php ne tient pas compte du charset=utf-8
choisi.
La saisie est en php et se trouve en tête du fichier.
Ensuite le <head> contenant le charset
puis le <body> qui écrit la page.

Tout ce qui passe par le php ne gère pas correctement les accents.

http://alos-sibas-abense.com/acte_formulaire3.php

Merci pour vos conseils

alainL



---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

4 réponses

Avatar
Olivier Miakinen
Bonjour,
Le 25/04/2018 23:48, AlainL a écrit :
J'ai utilisé un générateur de formulaires de ge-net . Mon formulaire
fonctionne mais la partie en php ne tient pas compte du charset=utf-8
choisi.
La saisie est en php et se trouve en tête du fichier.
Ensuite le <head> contenant le charset
puis le <body> qui écrit la page.
Tout ce qui passe par le php ne gère pas correctement les accents.
http://alos-sibas-abense.com/acte_formulaire3.php

J'ai fait plusieurs tests, où il ressort que :
1) ta page est bien en UTF-8, aussi bien avant la requête qu'au retour ;
2) les « é » passent correctement ;
3) les « É » ne passent pas.
La première différence que je vois entre un « é » et un « É » est le
premier s'encode en UTF-8 avec deux octets supérieurs à A0 en hexa,
donc tous deux dans ISO-8859-1, alors que le second nécessite un octet
valant 89 en hexa, donc en dehors de cette table.
Je suppose donc que c'est ton code PHP qui considère les caractères
comme étant en ISO-8859-1 alors qu'ils sont en UTF-8. Vérifie le code
lui-même, et au besoin va poser la question sur fr.comp.lang.php après
avoir copié le code source dans un fichier texte (pour qu'il ne soit
pas interprété comme du PHP). Il y a sûrement dans ce code une fonction
(peut-être d'accès à une base de données) qui croit que tu lui passes
de l'ISO-8859-1.
Cordialement,
--
Olivier Miakinen
Avatar
AlainL
Le 26/04/2018 à 14:40, Olivier Miakinen a écrit :
Bonjour,
Le 25/04/2018 23:48, AlainL a écrit :
J'ai utilisé un générateur de formulaires de ge-net . Mon formulaire
fonctionne mais la partie en php ne tient pas compte du charset=utf-8
choisi.
La saisie est en php et se trouve en tête du fichier.
Ensuite le <head> contenant le charset
puis le <body> qui écrit la page.
Tout ce qui passe par le php ne gère pas correctement les accents.
http://alos-sibas-abense.com/acte_formulaire3.php

J'ai fait plusieurs tests, où il ressort que :
1) ta page est bien en UTF-8, aussi bien avant la requête qu'au retour ;
2) les « é » passent correctement ;
3) les « É » ne passent pas.
La première différence que je vois entre un « é » et un « É » est le
premier s'encode en UTF-8 avec deux octets supérieurs à A0 en hexa,
donc tous deux dans ISO-8859-1, alors que le second nécessite un octet
valant 89 en hexa, donc en dehors de cette table.
Je suppose donc que c'est ton code PHP qui considère les caractères
comme étant en ISO-8859-1 alors qu'ils sont en UTF-8. Vérifie le code
lui-même, et au besoin va poser la question sur fr.comp.lang.php après
avoir copié le code source dans un fichier texte (pour qu'il ne soit
pas interprété comme du PHP). Il y a sûrement dans ce code une fonction
(peut-être d'accès à une base de données) qui croit que tu lui passes
de l'ISO-8859-1.
Cordialement,

Merci. J'ai enregistré le fichier ouvert avec Notepad++ en demandant
l'encodage en utf-8.
Essai : l'affichage en local du message envoyé est correct (sauf un ê
majuscule, majuscule imposée je pense par la vérif de la validité des
saisies), mais sur mon Thunderbird le message reçu restait en
hieroglyphes :-( .... jusqu'à ce que je paramètre ledit Thunder en
détection auto de l'encodage !
Bonne journée
alainL
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Olivier Miakinen
Le 26/04/2018 15:18, AlainL a écrit :

Merci. J'ai enregistré le fichier ouvert avec Notepad++ en demandant
l'encodage en utf-8.

Ce qui n'a rien à voir avec le code PHP. Comme je l'écrivais en (1)
la page est correctement encodée.
Essai : l'affichage en local du message envoyé est correct (sauf un ê
majuscule, majuscule imposée je pense par la vérif de la validité des
saisies),

En effet, le Ê est dans la même plage que le É, il y a donc le même
bug.
mais sur mon Thunderbird le message reçu restait en
hieroglyphes :-(

Sur Thunderbird ??? Que vient faire le courrielleur là-dedans.
.... jusqu'à ce que je paramètre ledit Thunder en
détection auto de l'encodage !

Ah. Et donc tu ne corrige pas le PHP pour les É et les Ê ?
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

Beurk. Merci de virer ça. Au pire tu lui demandes juste de ne pas
envoyer ce message de pub, au mieux tu désactives la vérification
des mails et news puisque ça fait double emploi avec le contrôle
de ce qui est écrit sur le disque.
--
Olivier Miakinen
Avatar
AlainL
Le 26/04/2018 à 17:34, Olivier Miakinen a écrit :
Le 26/04/2018 15:18, AlainL a écrit :

Merci. ...............

mais sur mon Thunderbird le message reçu restait en
hieroglyphes :-(

Sur Thunderbird ??? Que vient faire le courrielleur là-dedans.

Je me suis désigné comme destinataire pour le test.
Ah. Et donc tu ne corrige pas le PHP pour les É et les Ê ?

Là, ça dépasse mes compétences :-(
...............