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

 MySQL Discussion :

Problème accents base de données MYSQL


Sujet :

MySQL

  1. #1
    Invité
    Invité(e)
    Par défaut Problème accents base de données MYSQL
    Bonjour,
    j'ai un problème avec les accents (problème bien connu) qui sont remplacés par des "?".
    J'ai en effet encodé mes fichiers en utf8 grâce à notepad++, mis ma base de données en "mode" utf8, inséré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'"
    mais cela ne règle pas mon problème Quelqu'un pourrait m'aider ?
    Nom : Capture.PNG
Affichages : 11692
Taille : 1,84 MoNom : Capture2.PNG
Affichages : 11404
Taille : 3,3 Ko

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut titaii2.

    Ton fichier index.php, est-il converti dans le bon jeu de caractères "UTF-8 (sans bom)" ?

    As-tu mis la balise suivante dans ton document html/php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta charset="UTF-8" />
    Es-tu certain que ta base de données / tables / colonnes alphanumérique sont bien codifiées en "UTF8" avec une collation du genre "UTF8_GENERAL_CI" ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'ai effectivement déja fait tout ce que vous avez dit sauf pour la BDD où au lieu d'y avoir "utf8-general-ci" j"ai mis "utf8-unicode-ci"
    Je ne sais pas si cela change vraiment.
    Merci pour votre réponse en tout cas
    Dernière modification par al1_24 ; 08/02/2016 à 13h09. Motif: Citation inutile

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut Titaii2.

    Citation Envoyé par Titaii2
    où au lieu d'y avoir "utf8-general-ci" j'ai mis "utf8-unicode-ci"
    Non. C'est plutôt l'absence de collation qui peut poser un problème.

    La plupart du temps, les problèmes d'accents dans un document HTML / PHP viennent soit :
    --> d'une mauvaise codification de ce fichier lors de sa sauvegarde ==> notepad++ / onglet encodage / convertir UTF8 (sans bom).
    --> l'oubli de la balise "meta-charset" (celle que j'ai donné dans mon précédent message).
    --> l'oubli de la balise header si vous êtes en php. Je n'utilise pas cette balise dans mes script php et je n'ai aucun problème avec les accents.

    Ensuite, il y a les déclaratives à faire lors de la connexion à votre base de données.
    Si vous faites un accès à MySql en PDO, ne pas oublier de mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
    C'est en général cet oubli qui provoque des problèmes avec les accents qu'en on récupère des données venant de MySql.
    Je crois que c'est ce que vous avez fait !

    Normalement, il n'est pas nécessaire de mettre une déclarative au niveau d'apache, car vous utilisez déjà la balise "meta charset" dans le document html.
    On peut le faire en apache, mais cela crée plus de problème quand on a des sites dans des charset différents.

    Dans le fichier "my.ini", j'ai les déclaratives suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [client]
    # --------------- #
    #     Charset     #
    # --------------- #
    
    default-character-set = utf8
    
    [wampmysqld]
    # --------------- #
    #     Charset     #
    # --------------- #
    
    character-set-server     = utf8
    collation-server         = utf8_general_ci
    character-set-filesystem = utf8
     
    init-connect             = 'SET NAMES utf8 COLLATE utf8_general_ci;'
    Au niveau de la base de données, voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE DATABASE `base`
    	DEFAULT CHARACTER SET `utf8`
    	DEFAULT COLLATE       `utf8_general_ci`;
    Au niveau de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED;
    La liste n'est pas exhaustive, car cela dépend aussi de ce que vous faites dans votre script php.

    Citation Envoyé par Titaii2
    Merci pour votre réponse en tout cas
    Pas de quoi !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Je pense avoir fait tout ce que vous avez dit mais manque de bol j'ai toujours le problème.
    Au lieu de passer par des lignes de code, comme
    Au niveau de la base de données, voici un exemple :
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE DATABASE `base`
    DEFAULT CHARACTER SET `utf8`
    DEFAULT COLLATE       `utf8_general_ci`;
    Au niveau de la table :
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_ci`
      ROW_FORMAT=COMPRESSED;
    Je l'ai directement paramétré depuis ma base de données.
    Je vous envoie mon code de ma page php : http://pastebin.com/XRMHihm9

    Merci d'avance

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut Titaii2.

    Il vous manque au début de votre script php, les lignes suivantes (en rouge) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8" />
     <title>Données Mesurées</title>
    <link rel="stylesheet" href="styleres.css" />
    <link rel="shortcut icon" href="Terminator.ico" type="image/x-icon"/>
    <link rel="icon" href="Terminator.ico" type="image/x-icon"/>
    </head>
    Par contre, comme je suis en "ISO-8859-1", je ne sais pas si le problème vient de choix moi ou pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    catch (Exception $e)
    {
    	echo "Connection à MySql impossible : ", utf8_encode($e->getMessage());
    	die();
    }
    Je ne suis pas allé plus loin dans mes recherches.

    Je me suis assuré que le fichier "XRMHihm9.txt" était bien en "utf-8 (sans bom)" en le convertissant sous Notepad++.
    Normalement, vous devez poser cette question dans le forum consacré soit à php soit à html.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Problème connexion base de données MySQL avec VB.net
    Par fridrai dans le forum Administration
    Réponses: 3
    Dernier message: 28/05/2013, 18h59
  2. [MySQL] Problème d'insertion des accents dans une base de donnée MYSQL
    Par maroon1970 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/08/2011, 18h35
  3. Problème de connexion à une base de donnée MySQL
    Par casho dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/06/2007, 14h04
  4. Réponses: 11
    Dernier message: 22/11/2006, 07h31
  5. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00

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