osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Euro ou €, le mauvais caractère
Gnidhal
posté 2 Oct 2010, 06:25
Message #1


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9109
Inscrit : 4-March 03
Lieu : Auray
Membre no 927



Allez Challenge : passer le caractère € via javascript et ajax à la bibliothèque GD2 !
Le but étant de faire dynamiquement une visu en image d'une chaine de caractère pouvant contenir un prix.
Première constatation, ce caractère euro, bien qu'existant dans les polices les plus courantes, n'est pas accepté par la bibliothèque GD!
Essayez donc de faire un imagettftext() avec une chaine contenant ce caractère maudit et ça vous sortira un beau carré vide.
L'utilisation d'une police parfaitement standard comme arial puis vérification de l'existence de la glyphe dans le fichier, tout est ok. CHR(128) est son nom de code.
Rien! pas plus de résultat avec d'autres polices open true type qui comportent bien ce caractère pourtant.
La seule solution que j'ai trouvé a été de constituer des pictos dans mon logiciel graphique préféré dans le genre de euro_arial.png, une image de 10px de coté que je peux reprendre en GD, Ouf!

Jusque là, ça va. Pas forcément très orthodoxe comme méthode mais fonctionnelle.

Mais là où ça ne va plus c'est de tenter de faire passer l'euro d'un champ de saisi html à mon script de génération d'image.
Malgré tous mes essais, € se transforme en @¬ !
utf8 ou pas, le caractère fait le rétif.
Et la difficulté est de coder un caractère dans javascript pour le décoder dans php!
j'ai essayé des codages multiples mais javascript est pauvre en fonctions natives. Développer une fonction base64, htmlentities en javascript est faisable mais le décodage bute toujours sur ce @¬#©! d'€ !
La seule fonction native que j'ai trouvé qui code et décode parfaitement le sigle est le codage URL via escape/unescape : Cool!
manque de bol, la fonction php qui est sensée décoder, urldecode (ou rawurldecode) ne retrouve pas son € ! le décodage s'effectue bien mais l'euro reste bloqué sur % u20AC (sans espace après %)
J'ai donc bricolé :
Code
      $text =  urldecode($text);
      $text = preg_replace('/% u20AC/','€', $text);
ça marche! (virer l'espace après % le codage inséré ici se transforme bien en € !)
Alors si vous avez une solution plus propre, je suis preneur.
A noter tout de même que cette crotte de E majuscule à 2 barres* est présent sur nos clavier depuis plus de 10 ans! (infos dur l'euro)
Surement que son insertion dans les tables de caractères a du être bâclée alors qu'UTF8 n'était pas né et que le bug de l'an 2000 occupait alors les esprits informatiques. Car € butte à deux endroits alors que des caractères moins probables comme § ou ¤ sont parfaitement acceptés de bout en bout sans aucune conversion nécessaire. Le code 128 généralement utilisé dans les polices de caractère entre en conflit avec windows-1252. D'où des gymnastiques incroyables pour arriver à le faire passer d'un langage à l'autre.
Fin d'une galère de codage pour moi. Mais si ça fonctionne, je ne suis pas satisfait des procédés utilisés. Si vous trouvez plus convenable comme méthode, n'hésitez pas! smile.gif



(*)prononcez en roulant les r pour percevoir le double sens.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 
bertrandg
posté 11 Oct 2010, 10:43
Message #2


Ceinture verte OSC
Icône de groupe

Groupe : Membres
Messages : 655
Inscrit : 22-May 04
Lieu : SAINTES - CHARENTE MARITIME 17
Membre no 2528



Bonjour Gnidhal,

De mon côté le sigle € s'affiche parfaitement partout sur mon site, je pense qu'il a eu une modification mais je suis incapable de te dire laquelle, wacko.gif si tu as besoin d'un ou plusieurs fichiers pour vérifier n’hésites pas je peux te les fournir par MP.

Cordialement
Bertrand

PS : Je crois que je viens de trouver : dans l'admin localisation devise, remplace le sigle € ou (& # 128;) par (& # 8364;) sans les espaces ni les paranthèses.

Enfin chez moi ça marche.

Ce message a été modifié par bertrandg - 11 Oct 2010, 11:14.


--------------------
Cordialement,

Bertrand
MEDIOLANUM SANTONUM (17100)
Go to the top of the page
 
Gnidhal
posté 11 Oct 2010, 12:03
Message #3


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9109
Inscrit : 4-March 03
Lieu : Auray
Membre no 927



Merci, moi aussi smile.gif
Le problème n'est pas sur les pages en html mais dans la réalisation d'images à la volé en utilisant la bibliothèque graphique GD !
le #8364 n'est pas d'avantage reconnu par la bibliothèque GD. Quant au passage par js, le transcodage d'un langage à l'autre ne fonctionne pas correctement avec ce genre de codage. Merci tout de même wink.gif


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 
chti_poupon
posté 11 Oct 2010, 12:56
Message #4


Ceinture noire OSC
Icône de groupe

Groupe : TechDev
Messages : 2161
Inscrit : 9-September 08
Lieu : Douai
Membre no 22915



smile.gif Bonjour !
Grâce à ton post, j'ai au moins appris l'existence de bibliothèque GD et des fonctions php image.
A tout hasard, pourquoi pas superposer une ellipse (partielle) et deux traits/tilde décalés ? mellow.gif
Bonne recherche.
Chti poupon
Go to the top of the page
 
FoxP2
posté 11 Oct 2010, 15:10
Message #5


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1453
Inscrit : 3-June 09
Membre no 25501



as tu essayé avec la fonction iconv ?
au passage, Jquery possède son plugin de globalisation via un plugin officiel (développé par Microsoft, sur le modèle de culture existant sous DotNet) : jquery-glob


--------------------


Go to the top of the page
 
Gnidhal
posté 11 Oct 2010, 21:52
Message #6


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9109
Inscrit : 4-March 03
Lieu : Auray
Membre no 927



Pas mal comme idée Chtipoupon, mais pas vraiment propre si on utilise des polices qui ont leur style avec des glyphes parfaitement existants pour le caractère Euro.
Il est dommage que GD ne sache pas retrouver le bon glyphe dans une police.

Je vais regarder du coté de iconv qui m'a l'air plutôt évolué.
En ce qui concerne le passage de js à php, le truc que j'ai donné concernant le décodage via urldecode pourrait bien trouver sa solution avec iconv.
Je vous donnerai des résultats.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 23rd May 2013 - 05:03
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)