Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

euro iso-8859-1

2 réponses
Avatar
Mihamina Rakotomandimby (R12y)
Bonjour,

Soit des pages initialement en iso-8859-1 (et je ne dois pas le changer)
avec un formulaire ou l'on écrit le symbole Euro "¤" dans certains champs.

Certains champs se remplissent "automatiquement" par un petit script
Javascript. Ainsi, je recopie par exemple la valeur entrée dans le premier
champ dans certains champs. Il se trouve que c'est, des fois des montants
en Euro qu'il faut "recopier", et ce avec le symbole ¤.
Cela se fait normalement.

Je récupère ces valeurs, et les écris dans une base de donnée MySQL, le tout
en PHP.
Quand je passe en mode verbeux, et que je demande au script PHP d'afficher
la requete d'UPDATE/INSERT, alors il se trouve que le symbole ¤ est bien
affiché.

Mais du prompt mySQL, quand je visionne l'enregistrement fraichement inséré,
horreur! j'ai le code HTML du symbole ¤ (€)

Comment savoir, lequel des éléments mis en oeuvre à utilisé/transformé
en "€" ?
Ca peut être:
- le script Javascript
- le script PHP

Le souci c'est que quand je dis à PHP d'afficher la requete d'insertion ou
d'update, il m'affiche ça dans mon navigateur (Konqueror). Mon navigateur,
si il rencontre "€", il ne l'affiche pas brut, il transforme en ¤. Je
ne peux donc pas savoir si ¤ est passé en tant que "€" ou autre chose
à PHP.

Des idées? Merci d'avances.

2 réponses

Avatar
Olivier Miakinen

Soit des pages initialement en iso-8859-1 (et je ne dois pas le changer)
avec un formulaire ou l'on écrit le symbole Euro "¤" dans certains champs.


Bien. Ce sera donc forcément sous forme d'entité (€) ou de
référence numérique (€ ou €) puisque ce caractère
n'appartient pas à iso-8859-1.

Voir :
http://www.miakinen.net/vrac/charsets/
http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=3&pr4
http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=4&pr8

Certains champs se remplissent "automatiquement" par un petit script
Javascript. Ainsi, je recopie par exemple la valeur entrée dans le premier
champ dans certains champs. Il se trouve que c'est, des fois des montants
en Euro qu'il faut "recopier", et ce avec le symbole ¤.
Cela se fait normalement.

Je récupère ces valeurs, et les écris dans une base de donnée MySQL, le tout
en PHP.
Quand je passe en mode verbeux, et que je demande au script PHP d'afficher
la requete d'UPDATE/INSERT, alors il se trouve que le symbole ¤ est bien
affiché.


Dans quel jeu de caractères ? iso-8859-1 ? cp1252 ? Si tu le fais
afficher via un navigateur, qu'y a-t-il quand tu visualises le code
source de la page ?

Mais du prompt mySQL, quand je visionne l'enregistrement fraichement inséré,
horreur! j'ai le code HTML du symbole ¤ (€)


Comment ça, « horreur » ? Puisque c'est le seul moyen.

Comment savoir, lequel des éléments mis en oeuvre à utilisé/transformé
en "€" ?
Ca peut être:
- le script Javascript
- le script PHP


- le navigateur qui doit transmettre un caractère n'appartenant pas au
jeu déclaré

Le souci c'est que quand je dis à PHP d'afficher la requete d'insertion ou
d'update, il m'affiche ça dans mon navigateur (Konqueror). Mon navigateur,
si il rencontre "€", il ne l'affiche pas brut, il transforme en ¤.


Voir le code source (Ctrl+U dans Mozilla ou FireFox).

Je ne peux donc pas savoir si ¤ est passé en tant que "€" ou autre
chose à PHP.


Tu peux aussi faire une boucle en PHP pour afficher les codes numériques
de chaque octet composant une chaîne.

Avatar
ASM
Bonjour,

Soit des pages initialement en iso-8859-1 (et je ne dois pas le changer)
avec un formulaire ou l'on écrit le symbole Euro "¤" dans certains champs.


"On" ... qui ça ? le visiteur ?
si oui, comment s'y prend-il ?
si non, par quoi est-ce écrit ?
- en clair dans le code html ?
- javascript ?
- php ?

Ecrire '12 ¤' dans un champ de texte :

si c'est en JS :
document.monForm.monText.value = 12 + ' u20ac';

si en HTML :
<input name=montext value="12 &euro;">
ou :
<input name=montext value="12 &#8364;">

si en php, pareil qu'en html ?
echo '<input name=montext value="'.12.' &euro;">';

Certains champs se remplissent "automatiquement" par un petit script
Javascript.


Dans ce cas pour 'euro' utiliser le code unicode de remplacement :
u20ac
<http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=3&pr4>
exemple :
http://stephane.moriaux.perso.wanadoo.fr/truc/gloops_asm.htm

Je récupère ces valeurs, et les écris dans une base de donnée MySQL, le tout
en PHP.


Là il faut voir à voir ce qu'en fait le brouteur.
(je suppose que c'est "récupéré" par l'envoi du formulaire ?)

Quand je passe en mode verbeux, et que je demande au script PHP d'afficher
la requete d'UPDATE/INSERT, alors il se trouve que le symbole ¤ est bien
affiché.

Mais du prompt mySQL, quand je visionne l'enregistrement fraichement inséré,
horreur! j'ai le code HTML du symbole ¤ (&#8364;)


Oui, et alors ?
c'est l'html-entité numérique,
celle entité-html verbeuse sera '&euro'

Comment savoir, lequel des éléments mis en oeuvre à utilisé/transformé
en "&#8364;" ?
Ca peut être:
- le script Javascript


certainement pas

- le script PHP


ou bêtement le brouteur qui escape() le code récupéré dans la valeur de
l'input ?

Le souci c'est que quand je dis à PHP d'afficher la requete d'insertion ou
d'update, il m'affiche ça dans mon navigateur (Konqueror).


Heu il n'y a pas que Konkeror au monde ... ! ?

Mon navigateur Firefox,
pour '¤' trouvé dans un textarea ou un input renvoie : '%80'
qui est le code hexadecimal du charset Windows (CP1252)
(revoir le lien donné ci-avant des tables de caractères)

tu n'es pas sorti de l'auberge là ... !

Mon navigateur,
si il rencontre "&#8364;", il ne l'affiche pas brut, il transforme en ¤.


Normal.

Je
ne peux donc pas savoir si ¤ est passé en tant que "&#8364;" ou autre chose
à PHP.

Des idées?


y a pas une 'tite fonction PHP de traduction des html-entités en PHP ?
genre : htmlentity(blabla)

http://php.benscom.com/manual/fr/function.bin2hex.php
http://php.benscom.com/manual/fr/function.convert-uuencode.php
http://php.benscom.com/manual/fr/function.html-entity-decode.php
http://php.benscom.com/manual/fr/function.htmlentities.php



--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé