Page 1 sur 1

Création image et caractères spéciaux

Posté : 19 janv. 2006, 00:01
par spirou
Bonsoir à tous,

Je suis en train de m'initier à créer des images en php, et j'ai un petit problèmes avec les caractères accentués, certains ne s'affichent pas correctement sur mon image.

Bizarrement certains caratères comme le é î ç ë s'affichent correctement, mais d'autres comme le à è ù ï donnent d'autres caractères que je ne saurait reproduire ici.

Je n'ai pas de problème ailleurs que dans la création d'images, un echo de caractères accentués me donne les bons caractères.

De quoi cela pourrait-il venir ?

Merci.

Posté : 19 janv. 2006, 17:55
par IDNoires
tout simplement de la police que tu utilises pour afficher tes caractères dynamiquement dans tes images...
si ton fichier de police ne connait pas un caractère, il va mettre un caractère bizarre à la place

Posté : 19 janv. 2006, 18:24
par spirou
Je ne vois pas trop de quoi tu parles, car comme j'ai dis, dans mes pages php, les caractères sont corrects.

Mais lorsque je créé une image et que j'utilise imagestring(), les caractères spéciaux ne passent pas correctement que ce soit en local comme en ligne.

Donc peut-être quelquechose à ajouter dans le code, comme par exemple un header('Content-type: text/html; charset=iso-8859-15') que j'ai essayé, mais sans résultat.

Posté : 19 janv. 2006, 18:48
par IDNoires
Je ne vois pas trop de quoi tu parles, car comme j'ai dis, dans mes pages php, les caractères sont corrects.
Evidemment, car dans ce cas là tu utilises pas une police du serveur mais tu envoies au navigateur une chaine de caractère qui est écrite avec la police par défaut du navigateur... donc si tu envoie tes caractères accentués à un russe et qu'il ne charge pas les caractères latin, il ne verra pas tes é ou tes è par exemple.

Par contre, quand tu utilises imagestring, tu lui donnes en second paramètre la police à utiliser. PHP va dans ce cas utiliser la police correspondante sur ton serveur et si cette police ne comporte aucun caractère accentuée, il te générera une image bizarre de ta chaine.

Posté : 19 janv. 2006, 19:28
par spirou
Désolé, mais je ne suis pas sûr d'avoir compris et surtout la façon dont je pourrais règler le problème.

Etant chez free, je pense que leur serveur doit gérer les caratères accentués, m'enfin peut-être que je me trompe.

En local, je travaille avec EasyPhp, il doit y avoir quelque chose à modifier dans la configuration d'apache ?

Ensuite dans les paramètres de imagestring() , le deuxième correspond à la taille de police, mais il n'y en a pas pour le type de police.

Donc quelle solution pourrait-il y avoir ?

Aucune ?

Posté : 20 janv. 2006, 10:08
par IDNoires
Ensuite dans les paramètres de imagestring() , le deuxième correspond à la taille de police, mais il n'y en a pas pour le type de police.
Description
bool imagestring ( resource image , int font , int x , int y , string s , int col )

imagestring dessine une chaîne sur une ligne horizontale, dans l'image image , avec le coin en haut à gauche aux coordonnées ( x , y ) (le coin supérieur gauche est l'origine (0,0)) avec la couleur color . Si l'argument de police vaut 1, 2, 3, 4 ou 5, une des polices par défaut sera utilisée).

donc le deuxieme ce n'est pas la taille de ta police, mais le numéro de la police système que va utiliser ton imagestring. :wink:

Je reprends donc doucement mon explication :
Imagestring prend une police systeme si ton second paramètre est inférieur à 6. ok ?
Si la police système qu'il prend ne contient aucun caractère accentué (et il y en a plein), il ne peut pas te créer son image et te met un caractère bizarre à la place. ok ?
C'est totalement indépendant du fait que tu puisses afficher les caractères accentués via un echo.

Le problème est que tu es sur free, donc tu ne sais pas quels sont les polices dispo et surtout tu ne peux pas en mettre de nouvelle via imageloadfont.

Posté : 20 janv. 2006, 14:37
par spirou
Ok, je te crois sur parole :langue:

Mais seulement lorsque je fais varier le 2ème argument de 1 à 5, seule la taille de police change, c'est pourquoi je pensais que cette valeur définissait la taille de police.

Tant pis je vais faire avec :?

Merci IDNoires, tu m'as mis les idées au clair.

:wink: