IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Caractères accentués mal chargés dans la DB [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut Caractères accentués mal chargés dans la DB
    Bonjour,
    Depuis quelques jours les caractères accentués des records que je charge dans la DB Mysql sont remplacés par d'autres caractères
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO RVRTlog (Version, Timestamp, Dates, Module, Userid) VALUES ('$Version', '$Timestamp', '$Date', '$Module', '$Userid')");
    $Userid contient "Hervé" (mon pseudo), vérifié avec un Echo
    la zone Userid dans la DB contient Herv?
    encore plus bizarre : hier j'avais Hervé
    alors qu'avant hier j'avais bien Hervé

    D'où cela peut-il venir sachant que je n'ai rien changé au module php ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne sais pas ce que tu appelles le module PHP.
    Il n'y a pas eu une mise à jour sur ta serveur ?

    Quoi qu'il en soit, il vaut mieux spécifier l'encodage de la connexion Mysql que de se fier à la valeur par défaut qui peut changer.
    http://j-willette.developpez.com/tut...-site-en-utf8/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je ne sais pas ce que tu appelles le module PHP.
    Le script que j'exécute sur le serveur.

    Ce que je ne comprends pas c'est que si j'examine le contenu de la DB avec l'outil fourni par mon hébergeur (One.com)
    les enregistrements récents contiennent Herv?
    les enregistrements plus anciens contiennent Hervé
    ce qui signifierait que le fonctionnement de l'INSERT a changé ?
    Je vais poser la question à l'hébergeur.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme je t'ai dit, s'il y a eu une mise à jour, l'encodage par défaut a pu changer.
    Il faut que tu te recales en spécifiant le bon encodage partout.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Je viens d'apprendre qu'il y a effectivement eu une màj de la DB il y a quelques jours.
    Je ne comprends pas ce que je devrais faire pour me "recaler".

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'aurai tendance à dire que tu étais en ISO avant donc il faut ajouter après ta connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_set_charset('ISO-8895-15');
    Tout de même, les fonctions mysql_*** sont obsolètes. Il faudrait passer à PDO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Ça ne change rien, j'ai toujours Samuël au lieu de Samuël

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Attention, ça n'agit que pour les nouvelles données. Les données qui sont déjà mal encodées dans la base doivent être corrigés manuellement.
    Quel encodage as-tu
    - sur le fichier.php ?
    - dans la page HTML ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    DB Server charset: UTF-8 Unicode (utf8)
    Sur la page html je n'ai rien spécifié et tout fonctionnait très bien ainsi avant la màj de la DB par l’hébergeur.
    Dans la DB c'est correct, je vois par exemple Samuël, mais si je lis avec mysql_query j'ai Samuël et ce avec ou sans mysql_set_charset('ISO-8895-15');

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est que ta page est en UTF8 alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset('utf8');
    Il vaut mieux spécifier l'encodage HTML.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Ça ne change toujours rien avec mysql_set_charset('utf8');

    Tu peux consulter la page en question si tu veux : http://www.rudyv.be/VTT/index.php

    Les noms dans la table jaune viennent de la DB Mysql : j'ai toujours Samuël au lieu de Samuël.
    Le reste est codé en PHP ou HTML, par exemple "Vacances scolaires : pas d'accès à la salle" où j'ai bien un è et à

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as spécifié l'encodage du document HTML comme je t'ai dit ?
    Tu as contrôlé l'encodage du fichier .php comme je t'ai dit ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu as spécifié l'encodage du document HTML comme je t'ai dit ?
    Tu as contrôlé l'encodage du fichier .php comme je t'ai dit ?
    Je ne sais pas comment spécifier l'encodage du document HTML ni comment contrôler l'encodage du fichier .php (quel fichier php ?).
    De toute façon j'ai signalé le problème à l'hébergeur qui m'a répondu qu'il allait corriger : puisque ça fonctionnait avant et que je n'ai rien changé le problème est chez eux.

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dit moi que tu sais pas faire alors, ne me dit pas que ça ne marche pas.
    Hébergeur ou pas, tu devrais clarifier l'encodage utilisé par ton site ; il vaut mieux ne pas laisser le serveur ou le navigateur décider pour toi.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Dit moi que tu sais pas faire alors, ne me dit pas que ça ne marche pas.
    Le problème n'est pas que ça ne marche pas, mais bien que ça marchait depuis des années et que subitement ça ne marche plus parce que l'hébergeur a changé de version de MariaDB, ce n'est quand même pas de ma faute !
    Ils m'ont dit que d'autres clients ont le même problème que moi et qu'ils allaient corriger, donc je ne touche à rien, j'attends.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    Mon hébergeur me signale que le problème est résolu, mais ça ne l'est par, je lui ai donc renvoyé le problème.
    J'aimerais cependant comprendre.
    Si je regarde avec l'outil MyPHPadmin fourni par l'hébergeur, certains enregistrements contiennent par exemple "Température" (ok) et d'autres "Temp?rature"
    Ces enregistrements ont pourtant tous été créés par le même code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO RVRTlog (Version, Timestamp, Dates, Module, Userid) VALUES ('$Version', '$Timestamp', '$Date', '$Module', '$Userid')")
    la différence est qu'entretemps l'hébergeur a effectué une mise à niveau sur leur base de données [une migration] .

  17. #17
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je suppose que l'encodage par défaut de la connexion à la base de donnée a été modifié lors de la mise à jour.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je suppose que l'encodage par défaut de la connexion à la base de donnée a été modifié lors de la mise à jour.
    C'est probable mais que puis-je faire ?
    J'ai pas mal de scripts php.
    Quand j'envoie un mail au support on me dit que le problème a été envoyé au service technique; puis le support me dit que c'est résolu alors que ça ne l'est pas.
    Pas moyen de savoir ce que le service technique fait réellement.
    Je suis chez one.com

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour les données déjà dans la base, il faut les réecrire.
    Est-ce que ça fonctionne bien pour les nouvelles insertions ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pour les données déjà dans la base, il faut les réecrire.

    Citation Envoyé par sabotage Voir le message
    Est-ce que ça fonctionne bien pour les nouvelles insertions ?
    Non.
    Si je regarde dans la DB avec l'outil PHPadmin de mon hébergeur
    les enregistrements qui ont été récemment insérés par script php ne sont pas corrects (caractères accentués remplacés par des ?);
    ce qui est lu par script php n'est pas affiché (echo) correctement non plus
    par contre si je corrige à la main (avec PHPadmin) dans la DB alors c'est affiché correctement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. caractères accentués non reconnus dans une JTable
    Par nf1624 dans le forum Composants
    Réponses: 6
    Dernier message: 21/08/2009, 16h11
  2. Réponses: 1
    Dernier message: 29/03/2009, 17h45
  3. Réponses: 3
    Dernier message: 02/09/2008, 11h54
  4. Réponses: 1
    Dernier message: 14/10/2007, 20h00
  5. Réponses: 2
    Dernier message: 21/09/2007, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo