Bonjour à tous,
Je poste au sujet de l'affichage de lettres accentuées grâçe à la librairie GD.
J'utilise php 5.2.6 et la librairie GD version 2.
Contexte du bug:
J'ai un formulaire sur une première page qui permet à l'utilisateur de saisir un texte qui sera ma future variable "$chaine". Cette page est encodée en UTF8.
Lors de l'envoi du formulaire vers la page php traitant les infos,
je récupère la variable $_POST['chaine']; et demande à GD d'imprimer cette variable dans une image.
Pour cet impression écran, j'utilise la fonction imagestring:
<?php
header("Content-type: image/png");
$image = imagecreatetruecolor(400,600);
$color = "BEDFFE";
$rouge = hexdec(substr($color,0,2));
$vert = hexdec(substr($color,2,4));
$bleu = hexdec(substr($color,4,6));
$couleur = imagecolorallocate($image,$rouge,$vert,$bleu);
if (isset($_POST['chaine']))
{
$string = $_POST['chaine'];
imagestring($image, 5, 20, 50, $string);
}
imagepng($image);
imagedestroy($image);
?>
Voiçi mon souçi:
Cela fonctionne très bien pour les caractères alphabétiques et les caractères spéçiaux, mais pose un problème avec les lettres accentuées.
En effet, le caractère "
é" est affiché "
Ǎ Š" et "
à" sera affiché "
Ǎ ¨ "
Je pense donc que le problème vient de la fonction imagestring , qui réencode ma variable dans je ne sais pas trop quel encodage.. Ma variable étant sensée être en UTF8 ( elled'une page UTF8)
Cliquez sur
cette page php de test pour vous rendre compte en image. Tapez une lettre accentuée ( éèàç) et validez le formulaire..
Comme vous pouvez le voir, si j'utilise la fonction imagettftext (), les accents passent, mais pas avec la fonction imagestring () ...
Question:
Quelqu'un connait t il la norme d'encodage typo utilisée par la fonction imagestring() ?
Merci à tous ! Alex.
Si ça vous parle, votre aide est la bien venu !
Alex, étudiant à l'école supérieure des arts décoratifs de Strasbourg.