[1/2HS] Mysql et le symbole Euro =?utf-8?q?=E2=82=AC?=

Le
ajh-valmer
Bonjour,

Depuis peu, lorsque j'INSERT ou UPDATE une table MySQL,
via scripts PHP et SQL, je mets le montant : "30€"
et apparait dans le champ via phpmyadmin : "30¤".
Pareil si j'écris "30€".

Pourtant, si j'interroge la table (SELECT),
apparait bien dans le navigateur "30€".

L'interclassement est UTF8_general_ci.
Si je mets : latin1_general_ci, pareil.

Ce problème fait suite à un upgrade de mysql.

Merci,

A. Valmer
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ajh-valmer
Le #26537391
On Monday 03 February 2020 19:16:54 G2PC wrote:
Et si tu fais une requête de sélection avec le terminal,
ça retourne quoi comme réponse ? :

2020 : 20€ alors qu'avec phpmyadmin = 2020 : 20¤

Étrange, PhpMyAdmin devrait prendre en charge UTF-8.
Et ta page web elle affiche le même symbole, et, elle est en UTF-8 ?

Si je mets UTF-8, j'ai "2020 : 20?"
Sinon, ma page est en iso-8859-15.
Après, tu peux voir à contourner le problème, si tu ne l'i dentifies pas :
Encodage Html Entité Héxadécimal € | €
Encodage Html Entité Décimal € | €
Code ASCII
ou entité Html € | €
Encodage pour l'Url UTF-8 %E2%82%AC | €
ajh.valmer
Le #26537468
On Tuesday 04 February 2020 05:34:20 G2PC wrote:
D'après ce que tu écris, PHPMyAdmin retournerait le symbole en tant que
ISO 8859-1 ? https://fr.wikipedia.org/wiki/ISO/CEI_8859-15

Page Web de mon site, code PHP :
echo mb_internal_encoding();
UTF-8
Merci pour tous ces commentaires + liens.
Avant "€" m'affichait bien €
Pourquoi plus maintenant ?
J'ai bien essayé :
Si UTF-8 = "?"
Si ISO 8859-1(5)= "¤".
Et pourquoi si champ phpmyadmin = 30¤ (et pas €)
mon site affiche correctement 30 € ?
Et mysql en mode console, champ = 30 €
Lorsque je fais un update ou insert sql,
cotisation='30 €' qui devient sous phpmyadmin : 30¤
Serait-ce phpmyadmin ?
Bonne soirée,
Lire :
https://openclassrooms.com/forum/sujet/afficher-le-symbole-euro-present-da ns-une-base-de-donnees-52071
https://forum.phpfrance.com/php-debutant/stocker-sigle-symbole-euro-dans-t able-sql-t269428.html
En conclure qu'il faut vérifier l'encodage :
1- De ton fichier
2- De ta base/table
3- De ta connexion PHP car tu peux forcer l'encodage lors de la connexion
Ta BDD utilise quel encodage ? Le meilleur moyen de le savoir ou de s'en
assurer, c'est de faire un dump d'une ligne qui a un symbole euro dans
un fichier et d'ouvrir ce fichier avec un editeur hexa pour voir si
c'est bien de l'UTF-8 (sequence UTF-8: E2 82 AC ).
Je dis UTF8 car il serait préférable d'être en UTF8, puisq ue c'est la
norme à suivre d'après le W3C, et, qui permet justement de stan dardiser
ce type de problématiques de caractères spéciaux.
En gros, ça se rapproche avec ça :

https://www.developpez.net/forums/d606691/php/php-base-donnees/encodage-car acteres-sigle/
https://openclassrooms.com/forum/sujet/signe-euro-avec-utf8decode-79959
Bref, assures toi déjà de connaître l'encodage de ta base de données,
et, de ton fichier.
Si tu as quelque chose qui n'est pas en UTF8, demande toi si il ne
serait pas mieux de passer à l'UTF8.
Une fois en UTF8, et, les problèmes d'accents réglés, le e uro devrait
passer sans aucun problème.
Pense à bien sauvegarder les données, et BDD, avant de commence r à faire
des conversions, au risque de tout casser.
G2PC
Le #26537470
Page Web de mon site, code PHP :
echo mb_internal_encoding();
UTF-8
Merci pour tous ces commentaires + liens.
Avant "€" m'affichait bien €
Pourquoi plus maintenant ?
J'ai bien essayé :
Si UTF-8 = "?"
Si ISO 8859-1(5)= "¤".
Et pourquoi si champ phpmyadmin = 30¤ (et pas €)
mon site affiche correctement 30 € ?
Et mysql en mode console, champ = 30 €
Lorsque je fais un update ou insert sql,
cotisation='30 €' qui devient sous phpmyadmin : 30¤
Serait-ce phpmyadmin ?
Bonne soirée,

Tu as omis de vérifier la structure de ta base de données, tu peux faire
un export de la structure ?
De la table concernée au moins ?
Vérifie l'encodage de la table et de la colonne, ça donne quoi ?
Jean-Michel OLTRA
Le #26537756
Bonjour,
Le dimanche 09 février 2020, Erwann Le Bras a écrit...
on ne mets jamais l'unité dans une base de données...
on inscrit simplement les montants en base, c'est à la présentation des
données qu'on rajoute l'unité, ce qui permet de les manipuler comme on veut.

Tu peux la mettre dans une colonne à part, ou via un id dans une table
séparée. C'est quand même préférable de savoir dans quelle unité fut
enregistré ledit montant.
--
jm
Publicité
Poster une réponse
Anonyme