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

Langage PHP Discussion :

caractères spéciaux base MySQL [Encodage]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut caractères spéciaux base MySQL
    Bonsoir,

    j'ai un problème d'affichage des caractères spéciaux issus d'une base MySQL. Pourtant, dans mon fichier, j'ai placé cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sqlbase="SET NAMES 'utf8'";
    $reponsebase = $bdd->query($sqlbase);
    et sur la base, j'ai aussi exécuté cette requête : ALTER TABLE `nom_de_la_table` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin mais ça ne suffit pas ; que faudrait-il faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    tes fichiers sont bien encodés en UTF8 aussi?

    A+.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Oui (sans BOM) et comme ce sont des fichiers PHP : header( 'content-type: text/html; charset=utf-8' ); et d'ailleurs, l'affichage de ces caractères dans le texte affiché par ce fichier se passe bien...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Peut-étre une analyse pas a pas de ton probléme.
    Je veux dire que tu dois remettre a plat toute la chaine (historique de tes textes)
    Un exemple : si une table (ancienne ) contient des caractéres inconnus, tu peux te faire une configuration 100% homogéne,
    1) déclaration de ta table tel que tu l'as indiqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    mysql_query("ALTER TABLE `nom_de_la_table` CHARACTER SET latin1 COLLATE latin1_swedish_ci");
    ?>
    2) mais également les champs alphanum de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    mysql_query("ALTER TABLE `nom_de_la_table` CHANGE `un_texte` `un_texte` VARCHAR( 20 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT ''");
    ?>
    3) Coté PHP qui lira la table (dans mon exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    header('Content-type: text/html; charset=ISO-8859-1');
    ?>
    4) coté SQL (par exemple en PDO)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $bdd->exec("SET CHARACTER SET latin1");
    ?>
    5) et la page html envoyée au visiteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    Malgrés cet exés de zéle l'ancien contenu sera toujours érroné.

    Il te faut en effet sur les anciennes tables (au plus simple exporter en fichier texte corriger et réimporter)
    Mais bien sur tu peux si tu en connais l'encodage réencoder par fonction

    Une excelente page ici
    http://www.aquatz.com/Encodage-conve...MySQL_a36.html

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Christèle, avant d'appliquer tes conseils (même si je serai plus rapide en appliquant le point n°2 en le codant plutôt qu'en le faisant manuellement), je voudrais lever un doute : tu mets partout de l'ISO-8859-1 (ou du latin1_swedish_ci ce qui doit être à peu près la même chose) et jamais de l'utf-8 (contrairement à la page dont tu fournis le lien) : c'est normal ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Christèle, avant d'appliquer tes conseils (même si je serai plus rapide en appliquant le point n°2 en le codant plutôt qu'en le faisant manuellement), je voudrais lever un doute : tu mets partout de l'ISO-8859-1 (ou du latin1_swedish_ci ce qui doit être à peu près la même chose) et jamais de l'utf-8 (contrairement à la page dont tu fournis le lien) : c'est normal ?
    Oui j'ais repris un de mes "topo" avant d'adopter (depuis l'euro ) utf8
    Mais tu transposera facilement

    NOTA par contre le lien de mon message au dessus n'est pas a moi, mais
    il est super bien et je le recommande toujours.
    Mon site est dans mon profil
    http://www.fox-infographie.com

  7. #7
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    C'ets easy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $text = htmlentities($ton_text)
    T'insere $text dans la bdd et le probleme est resolue.

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Mais tu transposera facilement
    Bien sûr ; c'était juste pour ne pas faire du travail inutile.

    T'insere $text dans la bdd et le probleme est resolue.
    Et avec une base existante, on fait comment ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Merci beaucoup thebarbarius : comme je n'avais que 2 champs à problème, je les ai supprimés puis réinsérés en appliquant ton conseil, et c'est résolu.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Ce fut un plaisir.

    Bonne continuation !

  11. #11
    Membre à l'essai
    Homme Profil pro
    Photographe
    Inscrit en
    Novembre 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Photographe
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2013
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    Le post date un peu mais j'espère qu'il y aura encore quelqu'un au bout du fil...

    Je me suis servi des requêtes de christel_r et ô miracle cela résout mon problème. Mais malheureusement, cela en a génére un autre

    Explication.

    J'ai un site WP que j'essai de customiser. J'utilise un plugins qui me permet d'insérer du PHP dans mes pages WP, cela fonctionne très bien et je peux interroger une table Mysql sans problème. Ma page wordpress est constitué de textes généré directement depuis WP. Ces textes s'affichent correctement. Mais lorsque j'insère du texte en provenance de ma bdd, problème d'affichage des caractères accentués ( un ? dans losange noir ) J'ai donc utilisé les requêtes de christel_r qui ont solutionné le problème du texte venant la bdd. Malheureusement, ce sont les textes généré par la page wordpress qui s'affichent mal à présent ! Cette fois ci ce n'est un ? qui se substitue aux accents mais ça : é
    J'ai l'impression que les requêtes altèrent toute la page, y compris les textes wp...

    Si une âme charitable passe par là je veux bien son aide :-)

    À bientôt, j'espère.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par FrankH Voir le message
    Le post date un peu mais j'espère qu'il y aura encore quelqu'un au bout du fil...
    Je te signales que les messages privés sont strictement interdit pour des questions technique.
    Merci de ne plus utiliser ce mode de relance.


    Pour ton problème d'accents relis les bases sur l'encodage des html et des bases de données.

    Si tu es homogène, tu n'aura plus ce soucis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] Caractères spéciaux sous mysql
    Par tsumiko dans le forum Symfony
    Réponses: 3
    Dernier message: 16/01/2011, 12h13
  2. [MySQL] Caractères spéciaux et mysql
    Par PIEPLU dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/01/2010, 10h44
  3. Remplacer caractères spéciaux insertion mysql
    Par maxeur dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 19/05/2009, 09h57
  4. Réponses: 8
    Dernier message: 11/07/2006, 14h34

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