[...]
$text = "æ à ¼ â ¤ a ç à";
imagettftext($im, 14, 0, 8, 18, $black, $font, $text);
imagepng($im);
j'obtiens :
æ [carré vide] à [carré vide] â [carré vide] a
bref, les ½ et ¤ ne s'affichent pas correctement (carré vide), tandis
que le ç et le à ne s'affichent pas du tout, sous aucune forme.
le remplacement de :
$text = "æ à ¼ â ¤ a ç à";
par :
$text =utf8_encode("æ à ¼ â ¤ a ç à");
permet d'obtenir l'affichage de :
æ [carré vide] à [carré vide] â [carré vide] a ç à
bref, ça résoud le pb d'affichage des "ç" et des "à", mais pas des "¼"
ni des "¤".
J'ai testé avec les polices arial, vera et georgia : ce n'est donc pas à
priori à cause de l'inexistence d'un caractère dans la police.
J'ai moultement cherché depuis 2 jours via google : je n'ai rien trouvé
qui fonctionne.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cleo
Salut,
Le code que tu as fourni a été écrit avec un éditeur retranscrivant chaque caractère dans un codepage particulier. Par example php-dev produit du code en CP1252, phpeclipse produit de l'UTF-8, etc... .
1. L'interpréteur php ne fait aucune conversion [codepage éditeur -> Unicode] lors de la création des chaines en mémoire. 2. A priori, la fonction imagettftext nécessite un text en utf-8 ...
Je te conseillerais donc de déterminer dans quel codepage est transcrit ton code, puis d'utiliser le code suivant:
$text = "æ à ¼ â ¤ a ç à"; $textutf8 = iconv( **CODEPAGEEDITEUR**, "UTF-8", $text ) ; imagettftext($im, 14, 0, 8, 18, $black, $font, $textutf8); imagepng($im); etc ...
Amicalement -- Cléo.
Salut,
Le code que tu as fourni a été écrit avec un éditeur retranscrivant chaque
caractère dans un codepage particulier.
Par example php-dev produit du code en CP1252, phpeclipse produit de
l'UTF-8, etc... .
1. L'interpréteur php ne fait aucune conversion [codepage éditeur ->
Unicode] lors de la création des chaines en mémoire.
2. A priori, la fonction imagettftext nécessite un text en utf-8 ...
Je te conseillerais donc de déterminer dans quel codepage est transcrit ton
code, puis d'utiliser le code suivant:
$text = "æ à ¼ â ¤ a ç à";
$textutf8 = iconv( **CODEPAGEEDITEUR**, "UTF-8", $text ) ;
imagettftext($im, 14, 0, 8, 18, $black, $font, $textutf8);
imagepng($im);
etc ...
Le code que tu as fourni a été écrit avec un éditeur retranscrivant chaque caractère dans un codepage particulier. Par example php-dev produit du code en CP1252, phpeclipse produit de l'UTF-8, etc... .
1. L'interpréteur php ne fait aucune conversion [codepage éditeur -> Unicode] lors de la création des chaines en mémoire. 2. A priori, la fonction imagettftext nécessite un text en utf-8 ...
Je te conseillerais donc de déterminer dans quel codepage est transcrit ton code, puis d'utiliser le code suivant:
$text = "æ à ¼ â ¤ a ç à"; $textutf8 = iconv( **CODEPAGEEDITEUR**, "UTF-8", $text ) ; imagettftext($im, 14, 0, 8, 18, $black, $font, $textutf8); imagepng($im); etc ...
cenpendant, ça ne marche qu'en ("internal preview" avec DEV-PHP), sur ma propre machine (peut-être parce que c'est (probablement) PHP 5 qui est utilisé alors qu'avec un navigateur via localhost, j'utilise PHP 4, comme mon hébérgeur.
L'erreur renvoyé est : Warning: cannot yet handle MBCS in html_entity_decode()! in C:apachefriendsxampphtdocsTESTgraphique.php on line 307 (ce qui n'est absloument pas clair pour moi)
j'obtiens l'affichage d'un "1/4" (en un seul caractère), ce qui n'est pas vraiment attendu. Cette solution fonctionne donc avec un navigateur sur localhost, mais n'affiche pas le bon caractère.
2) second point :
$text = "æ à ¼ â ¤ a ç à"; [...]
pas sûr que les caratères de mon message précédant s'affichent correctement pour tout le monde(pourtant, je suis en latin-15).
Donc vous n'allez rien comprendre.
Dans l'ordre, ma liste de caractères est donc :
e dans l'a a accent grave e dans l'o a circonflexe symbole euro a c cédille a accent grave
cenpendant, ça ne marche qu'en ("internal preview" avec DEV-PHP), sur ma
propre machine (peut-être parce que c'est (probablement) PHP 5 qui est
utilisé alors qu'avec un navigateur via localhost, j'utilise PHP 4,
comme mon hébérgeur.
L'erreur renvoyé est :
Warning: cannot yet handle MBCS in html_entity_decode()! in
C:apachefriendsxampphtdocsTESTgraphique.php on line 307
(ce qui n'est absloument pas clair pour moi)
j'obtiens l'affichage d'un "1/4" (en un seul caractère), ce qui n'est
pas vraiment attendu. Cette solution fonctionne donc avec un navigateur
sur localhost, mais n'affiche pas le bon caractère.
2) second point :
$text = "æ à ¼ â ¤ a ç à";
[...]
pas sûr que les caratères de mon message précédant s'affichent
correctement pour tout le monde(pourtant, je suis en latin-15).
Donc vous n'allez rien comprendre.
Dans l'ordre, ma liste de caractères est donc :
e dans l'a
a accent grave
e dans l'o
a circonflexe
symbole euro
a
c cédille
a accent grave
cenpendant, ça ne marche qu'en ("internal preview" avec DEV-PHP), sur ma propre machine (peut-être parce que c'est (probablement) PHP 5 qui est utilisé alors qu'avec un navigateur via localhost, j'utilise PHP 4, comme mon hébérgeur.
L'erreur renvoyé est : Warning: cannot yet handle MBCS in html_entity_decode()! in C:apachefriendsxampphtdocsTESTgraphique.php on line 307 (ce qui n'est absloument pas clair pour moi)
j'obtiens l'affichage d'un "1/4" (en un seul caractère), ce qui n'est pas vraiment attendu. Cette solution fonctionne donc avec un navigateur sur localhost, mais n'affiche pas le bon caractère.
2) second point :
$text = "æ à ¼ â ¤ a ç à"; [...]
pas sûr que les caratères de mon message précédant s'affichent correctement pour tout le monde(pourtant, je suis en latin-15).
Donc vous n'allez rien comprendre.
Dans l'ordre, ma liste de caractères est donc :
e dans l'a a accent grave e dans l'o a circonflexe symbole euro a c cédille a accent grave
-- Thierry
Olivier Miakinen
J'ai un petit soucis d'affichage de caractère :
si j'écris :
$text = "æ à ¼ â ¤ a ç à"; echo $text;
j'affiche : æ à ¼ â ¤ a ç à (bref, ça marche)
Déjà là, il ne suffit pas de les voir s'afficher correctement pour savoir comment faire la suite : il faudrait savoir quel encodage est utilisé, les plus probables étant windows-1252, ISO-8859-15 et UTF-8.
Si je fais :
[...] $text = "æ à ¼ â ¤ a ç à"; imagettftext($im, 14, 0, 8, 18, $black, $font, $text); imagepng($im);
j'obtiens : æ [carré vide] à [carré vide] â [carré vide] a bref, les ½ et ¤ ne s'affichent pas correctement (carré vide), tandis que le ç et le à ne s'affichent pas du tout, sous aucune forme.
Déjà, cela montre que ce n'était pas de l'UTF-8 puisque, d'après la doc, c'est ce qu'il attend.
le remplacement de : $text = "æ à ¼ â ¤ a ç à"; par : $text =utf8_encode("æ à ¼ â ¤ a ç à"); permet d'obtenir l'affichage de : æ [carré vide] à [carré vide] â [carré vide] a ç à bref, ça résoud le pb d'affichage des "ç" et des "à", mais pas des "¼" ni des "¤".
Le fait que tout s'affiche correctement sauf « ¼ » et « ¤ » laisse supposer que ton encodage par défaut est win-1252. En effet, utf8_encode suppose ISO-8859-1 en entrée (et UTF-8 en sortie). Si tu étais en ISO-8859-15, « ¤ » dont le code est 164 serait interprété comme un symbole monétaire international (une sorte de rond avec quatre épines, que certains appellent « trou du cul »), et « ¼ » dont le code est 188 serait interprété comme un caractère « 1/4 ».
J'ai testé avec les polices arial, vera et georgia : ce n'est donc pas à priori à cause de l'inexistence d'un caractère dans la police.
Non, c'est dû à un mauvais encodage.
Peut-être avez-vous la solution ?
Essaye : $text = iconv("CP1252", "UTF-8", "æ à ¼ â ¤ a ç à");
Mais tu peux aussi éditer ton fichier PHP avec un éditeur qui connaît plusieurs encodages, et le sauvegarder en UTF-8.
J'ai un petit soucis d'affichage de caractère :
si j'écris :
$text = "æ à ¼ â ¤ a ç à";
echo $text;
j'affiche : æ à ¼ â ¤ a ç à
(bref, ça marche)
Déjà là, il ne suffit pas de les voir s'afficher correctement pour
savoir comment faire la suite : il faudrait savoir quel encodage est
utilisé, les plus probables étant windows-1252, ISO-8859-15 et UTF-8.
Si je fais :
[...]
$text = "æ à ¼ â ¤ a ç à";
imagettftext($im, 14, 0, 8, 18, $black, $font, $text);
imagepng($im);
j'obtiens :
æ [carré vide] à [carré vide] â [carré vide] a
bref, les ½ et ¤ ne s'affichent pas correctement (carré vide), tandis
que le ç et le à ne s'affichent pas du tout, sous aucune forme.
Déjà, cela montre que ce n'était pas de l'UTF-8 puisque, d'après la doc,
c'est ce qu'il attend.
le remplacement de :
$text = "æ à ¼ â ¤ a ç à";
par :
$text =utf8_encode("æ à ¼ â ¤ a ç à");
permet d'obtenir l'affichage de :
æ [carré vide] à [carré vide] â [carré vide] a ç à
bref, ça résoud le pb d'affichage des "ç" et des "à", mais pas des "¼"
ni des "¤".
Le fait que tout s'affiche correctement sauf « ¼ » et « ¤ » laisse
supposer que ton encodage par défaut est win-1252. En effet, utf8_encode
suppose ISO-8859-1 en entrée (et UTF-8 en sortie). Si tu étais en
ISO-8859-15, « ¤ » dont le code est 164 serait interprété comme un
symbole monétaire international (une sorte de rond avec quatre épines,
que certains appellent « trou du cul »), et « ¼ » dont le code est 188
serait interprété comme un caractère « 1/4 ».
J'ai testé avec les polices arial, vera et georgia : ce n'est donc pas à
priori à cause de l'inexistence d'un caractère dans la police.
Non, c'est dû à un mauvais encodage.
Peut-être avez-vous la solution ?
Essaye :
$text = iconv("CP1252", "UTF-8", "æ à ¼ â ¤ a ç à");
Mais tu peux aussi éditer ton fichier PHP avec un éditeur qui connaît
plusieurs encodages, et le sauvegarder en UTF-8.
Déjà là, il ne suffit pas de les voir s'afficher correctement pour savoir comment faire la suite : il faudrait savoir quel encodage est utilisé, les plus probables étant windows-1252, ISO-8859-15 et UTF-8.
Si je fais :
[...] $text = "æ à ¼ â ¤ a ç à"; imagettftext($im, 14, 0, 8, 18, $black, $font, $text); imagepng($im);
j'obtiens : æ [carré vide] à [carré vide] â [carré vide] a bref, les ½ et ¤ ne s'affichent pas correctement (carré vide), tandis que le ç et le à ne s'affichent pas du tout, sous aucune forme.
Déjà, cela montre que ce n'était pas de l'UTF-8 puisque, d'après la doc, c'est ce qu'il attend.
le remplacement de : $text = "æ à ¼ â ¤ a ç à"; par : $text =utf8_encode("æ à ¼ â ¤ a ç à"); permet d'obtenir l'affichage de : æ [carré vide] à [carré vide] â [carré vide] a ç à bref, ça résoud le pb d'affichage des "ç" et des "à", mais pas des "¼" ni des "¤".
Le fait que tout s'affiche correctement sauf « ¼ » et « ¤ » laisse supposer que ton encodage par défaut est win-1252. En effet, utf8_encode suppose ISO-8859-1 en entrée (et UTF-8 en sortie). Si tu étais en ISO-8859-15, « ¤ » dont le code est 164 serait interprété comme un symbole monétaire international (une sorte de rond avec quatre épines, que certains appellent « trou du cul »), et « ¼ » dont le code est 188 serait interprété comme un caractère « 1/4 ».
J'ai testé avec les polices arial, vera et georgia : ce n'est donc pas à priori à cause de l'inexistence d'un caractère dans la police.
Non, c'est dû à un mauvais encodage.
Peut-être avez-vous la solution ?
Essaye : $text = iconv("CP1252", "UTF-8", "æ à ¼ â ¤ a ç à");
Mais tu peux aussi éditer ton fichier PHP avec un éditeur qui connaît plusieurs encodages, et le sauvegarder en UTF-8.
cenpendant, ça ne marche qu'en ("internal preview" avec DEV-PHP), sur ma propre machine (peut-être parce que c'est (probablement) PHP 5 qui est utilisé alors qu'avec un navigateur via localhost, j'utilise PHP 4, comme mon hébérgeur.
Par ailleurs, attention : tu as mis comme encodage 'utf-8' alors que c'est 'UTF-8' qui est documenté.
L'erreur renvoyé est : Warning: cannot yet handle MBCS in html_entity_decode()! in C:apachefriendsxampphtdocsTESTgraphique.php on line 307 (ce qui n'est absloument pas clair pour moi)
j'obtiens l'affichage d'un "1/4" (en un seul caractère), ce qui n'est pas vraiment attendu. Cette solution fonctionne donc avec un navigateur sur localhost, mais n'affiche pas le bon caractère.
Cela confirme mon intuition, que tu es en CP1252 par défaut. CP1252 est un sur-ensemble de ISO-8859-1, et le caractère '1/4' dans ces deux encodages est à la même position que le « ¼ » en ISO-8859-15 (tiens, tu l'as écrit en minuscules aussi, donc ce n'est pas la casse de 'utf-8' qui est en cause plus haut).
2) second point :
$text = "æ à ¼ â ¤ a ç à"; [...]
pas sûr que les caratères de mon message précédant s'affichent correctement pour tout le monde(pourtant, je suis en latin-15).
Si, si, parfaitement. Tu peux avoir CP1252 par défaut sur la machine, et que Mozilla le traduise en ISO-8859-15. Il fait ça très bien.
cenpendant, ça ne marche qu'en ("internal preview" avec DEV-PHP), sur ma
propre machine (peut-être parce que c'est (probablement) PHP 5 qui est
utilisé alors qu'avec un navigateur via localhost, j'utilise PHP 4,
comme mon hébérgeur.
Par ailleurs, attention : tu as mis comme encodage 'utf-8' alors que
c'est 'UTF-8' qui est documenté.
L'erreur renvoyé est :
Warning: cannot yet handle MBCS in html_entity_decode()! in
C:apachefriendsxampphtdocsTESTgraphique.php on line 307
(ce qui n'est absloument pas clair pour moi)
j'obtiens l'affichage d'un "1/4" (en un seul caractère), ce qui n'est
pas vraiment attendu. Cette solution fonctionne donc avec un navigateur
sur localhost, mais n'affiche pas le bon caractère.
Cela confirme mon intuition, que tu es en CP1252 par défaut. CP1252 est
un sur-ensemble de ISO-8859-1, et le caractère '1/4' dans ces deux
encodages est à la même position que le « ¼ » en ISO-8859-15 (tiens, tu
l'as écrit en minuscules aussi, donc ce n'est pas la casse de 'utf-8'
qui est en cause plus haut).
2) second point :
$text = "æ à ¼ â ¤ a ç à";
[...]
pas sûr que les caratères de mon message précédant s'affichent
correctement pour tout le monde(pourtant, je suis en latin-15).
Si, si, parfaitement. Tu peux avoir CP1252 par défaut sur la machine, et
que Mozilla le traduise en ISO-8859-15. Il fait ça très bien.
cenpendant, ça ne marche qu'en ("internal preview" avec DEV-PHP), sur ma propre machine (peut-être parce que c'est (probablement) PHP 5 qui est utilisé alors qu'avec un navigateur via localhost, j'utilise PHP 4, comme mon hébérgeur.
Par ailleurs, attention : tu as mis comme encodage 'utf-8' alors que c'est 'UTF-8' qui est documenté.
L'erreur renvoyé est : Warning: cannot yet handle MBCS in html_entity_decode()! in C:apachefriendsxampphtdocsTESTgraphique.php on line 307 (ce qui n'est absloument pas clair pour moi)
j'obtiens l'affichage d'un "1/4" (en un seul caractère), ce qui n'est pas vraiment attendu. Cette solution fonctionne donc avec un navigateur sur localhost, mais n'affiche pas le bon caractère.
Cela confirme mon intuition, que tu es en CP1252 par défaut. CP1252 est un sur-ensemble de ISO-8859-1, et le caractère '1/4' dans ces deux encodages est à la même position que le « ¼ » en ISO-8859-15 (tiens, tu l'as écrit en minuscules aussi, donc ce n'est pas la casse de 'utf-8' qui est en cause plus haut).
2) second point :
$text = "æ à ¼ â ¤ a ç à"; [...]
pas sûr que les caratères de mon message précédant s'affichent correctement pour tout le monde(pourtant, je suis en latin-15).
Si, si, parfaitement. Tu peux avoir CP1252 par défaut sur la machine, et que Mozilla le traduise en ISO-8859-15. Il fait ça très bien.