Caractères accentués

Eléphant du PHP | 256 Messages

26 juin 2021, 17:04

Bonjour,
J'écris sur une image en php mais les caractères accentués sont mal rendus.
Le script php est sauvé en UTF-8

Code : Tout sélectionner

header('Content-Type: text/html; charset=utf-8'); ... imagestring($Container, 5,x,y, $Txt, $rouge);
Par exemple $Txt = "Données périmées"
Résultat
Image

A noter que les caractères sont mal rendus aussi avec Echo "Données périmées"
mais correctement avec "Donn&eacutees p&eacuterim&eacutees"
par contre avec imagestring les &eacute donnent aussi ĂŚ

Merci d'avance pour votre aide

Mammouth du PHP | 2703 Messages

26 juin 2021, 17:21

il faut vérifier dans l'éditeur de texte utilisé que l'encodage du fichier php est bien en utf8.

Eléphant du PHP | 256 Messages

26 juin 2021, 17:30

Le script php est sauvé en UTF-8

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 juin 2021, 23:29

Tente un coup de utf8_decode() ou utf8_encode()
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 256 Messages

27 juin 2021, 09:20

Bonjour,
Je ne comprends pas ce qui se passe.
Puisque mon script est sauvé en UTF-8, si je fais $Txt = "Données périmées", les caractères devraient se retrouvées en UTF-8 dans $Txt non ?

Eléphant du PHP | 256 Messages

27 juin 2021, 12:51

$Txt = utf8_decode("Données périmées ") => Données périmées
Mon script est donc bien en UTF-8 mais pourquoi dois-je les convertie en ISO-8859-1 puisque la 1ère ligne de ce script est
header('Content-Type: text/html; charset=utf-8');

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 juin 2021, 19:15

Salutations !

Le header de ton script n'a d'incidence que pour les informations que tu envois au navigateur, mais là ta chaine n'est pas transmise au navigateur, elle est utilisée pour générer une image ;)

A priori imagestring() ne supporte pas l'utf8, mais tu dois pouvoir utiliser imagettftext() (qui supporte l'utf8 mais utilise une police TrueType) si tu as besoin de ce charset
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 256 Messages

27 juin 2021, 19:22

Ben non justement !

Code : Tout sélectionner

$Txt=utf8_decode("Données périmées")); imagestring($Container, 5, $MarginL,$MarginT, $Txt, $rouge); echo "<br>".$Txt.date("Y/m/d H:i:s",$FileTime)." LogBooks/".$file;
dans les 2 cas c'est maintenant correct; avant sans utf8_decode j'avais des caractères bizarres dans les 2 cas.