Création image et caractères spéciaux

Eléphant du PHP | 172 Messages

19 janv. 2006, 00:01

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.

Eléphanteau du PHP | 38 Messages

19 janv. 2006, 17:55

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

Eléphant du PHP | 172 Messages

19 janv. 2006, 18:24

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.

Eléphanteau du PHP | 38 Messages

19 janv. 2006, 18:48

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.

Eléphant du PHP | 172 Messages

19 janv. 2006, 19:28

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 ?

Eléphanteau du PHP | 38 Messages

20 janv. 2006, 10:08

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.

Eléphant du PHP | 172 Messages

20 janv. 2006, 14:37

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: