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 :

Accents et encodage [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Accents et encodage
    Bonjour,

    Je suis en train de développer une application web avec php et mysql. Cependant j'ai un problème qui me bloque depuis quelques jours et je ne sais plus du tout comment faire. Je fais donc appel à vous.

    Tout d'abord, il faut savoir que ma base de données, mes tables, mes fichiers html, et les query php utilisent tous l'encodage utf8.

    Exemple de création de table :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE IF NOT EXISTS `dossier` (
      ...
      PRIMARY KEY (`dossier_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

    Début de ma page html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta content="text/html; Charset=utf-8" http-equiv="Content-Type" />

    connexion à ma base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $link = mysql_connect($hostname, $username, $password);
    mysql_select_db($dbname);
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $link);
    mysql_set_charset('utf8', $link);
    Etant donné que j'utilise la méthode json_encode() de php pour transformer le résultat de requête mysql en json, je dois absolument avoir l'encodage utf8.
    Cependant, chaque résultat de query me retourne des variables de type "ASCII".

    Et mon problème s'arrête ici. J'ai tenté beaucoup de choses et toujours au même stade.

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Tes pages sont encodés en utf-8 sans bom ?

    Sinon ce tuto developpez.
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    oui, j'ai vérifié, elle sont bien en utf-8 sans bom

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Tu as lu le lien ?

    Tu as ton doctype en entier ? Celui généré par le HTML ...
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 84
    Points : 101
    Points
    101
    Par défaut
    Hello,

    Vérifie également l'encodage de tes fichiers (ex : sous ultra-edit -> tes fichiers devraient être dans un format type DOS / PHP).
    Dans ton cas je pencherai vers l'option
    fichier -> conversions -> ASCII to Unicode.

  6. #6
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 427
    Points
    2 427
    Billets dans le blog
    27
    Par défaut
    Citation Envoyé par likesum41 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $link = mysql_connect($hostname, $username, $password);
    mysql_select_db($dbname);
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $link);
    mysql_set_charset('utf8', $link);
    Heu on définit pas le Charset avant la requête normalement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $link = mysql_connect($hostname, $username, $password);
    mysql_set_charset('utf8', $link);
    mysql_select_db($dbname);
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $link);
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    déjà merci pour vos réponses !

    désolé du retard mais difficile de trouver un petit moment même durant ce beau week-end de 5 jours

    En ce qui concerne le tutoriel, j'ai bien tous les éléments dans mon environnement de dev.

    Voici ce que l'on peut trouver dans l'entête du html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
    <meta content="text/html; Charset=utf-8" http-equiv="Content-Type" />

    L'encodage de mes fichiers est bien utf-8 sans bom.

    En ce qui concerne ce que disait Nothus, j'ai tenté de modifier l'ordre mais rien ne change.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Si je peut te donner un petit conseil, ( ayant eu le même soucis )
    utilise les fonctionnalitées PDO pour coder.( autant commencer à apprendre avec les dernière nouveautées ^^ )

    n'étant que débutant je ne peut pas t'aider dans la méthode _mysql ne m'y connaissant pas. en PDO tu peut utiliser PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8'
    dans ta connexion de la manière suivante :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    try
    {
    	$dns = 'mysql:host=localhost;dbname=LeNomDeTaBDD';
      $utilisateur = 'NomUtilisateur';
      $motDePasse = 'MotDePasse';
      $bdd = new PDO( $dns, $utilisateur, $motDePasse, array (PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8',PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    ?>

    Vérifie que tes bases de données sont bien créer avec un interclassement utf8_general_ci et également pour tes tables qui sont à l'intérieur de ta base de donnée.

    j'espère que sa pourra t'aider ^^.
    Cordialement.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 6
    Points
    6
    Par défaut


    Merci mille fois ! Débutant mais très bon débutant !

    ça a résolu mon problème ! Et il était temps !

    [RESOLU]

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

Discussions similaires

  1. [Encodage] Mailto accents et encodage
    Par Climoo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 10/12/2010, 09h53
  2. Réponses: 0
    Dernier message: 21/07/2010, 15h36
  3. Réponses: 5
    Dernier message: 10/09/2009, 11h37
  4. pb accent et encodage avec ajax
    Par penguin50 dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 20/02/2008, 14h39

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