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 :

Problème de caractères inconnus [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut Problème de caractères inconnus
    Bonjour tout le monde,

    Je fais un site internet et j'ai petit problème avec l'UTF-8.

    Pour l'instant je développe ça en local avec XAMPP.

    J'ai mis ma base de données mysql en utf8_general_ci et mes fichiers PHP et TPL sont en UTF-8 SANS BOM car sinon j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\xampp\htdocs\mascaret\admin\gestion_carte\liste_categorie.php:1) in ...
    Avec cette configuration, lorsque je fait mes INSERT direct sur phpmyadmin et que j'ajoute des données contenant des accents comme é ou è, en les affichant j'obtiens des losanges avec un point d'interrogation. Et lorsque je l'ajout avec mon application, mon site l'affiche bien mais en base de données j'ai "é".

    Donc j'aimerais savoir comment faire pour avec les même caractères "é" partout, y a t-il un moyen?

    Merci d'avance, j'espère avoir été clair.

    Amicalement, Florian.

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Ton erreur du début, c du a un session_start alors que du code html a déjà été envoyé. Ce n'est pas un problème d'encodage, je crois

    Je resterais en UTF8 partout, et je traiterais cette erreur.

    Pour la suite, je suis pas sûr à 100%, c de l'info à approfondir
    Ensuite pour le codage des caractères, des explorateurs tournent en Ascii de base, le codage des caractères spéciaux sont avec des & en plus genre:
    'ç' <-> &Ccedil;
    Ya des fonctions php a utiliser dans ces cas (voir htmlspecialchars, htmlentities etc, )

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Si, notamment avec Notepad++, le UTF-8 sans BOM est requis... J'ai jamais compris pourquoi, mais le BOM en question ce sont 3 caractères "invisibles" qui viennent se glisser en début de fichier et qui font sauter le session_start() vu qu'ils sont lus avant la balise '<?php'...

    Tout ce que tu rentres dans ta base à partir de ton appli, encode le en utf8 avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    utf8_encode($ta_valeur);
    Ton en-tête HTML doit spécifier un encodage utf-8 (normalement ton en-tête est écrit 1 fois dans ton code, dans la balise header) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
        ...
    </head>
    De plus, lors de ta connexion à ta base, par exemple avec PDO, tu peux passer la clause suivante 'SET NAMES utf8' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public function dbConn()
        {
            return new PDO('mysql:host=localhost;dbname=ta_base,
                            login, mdp, 
                            array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
                                   PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                                   PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
                                   PDO::ATTR_PERSISTENT => false));
        }

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut
    Bonsoir,

    Merci pour vos réponses.

    Pour ce qui est de la meta et tout c'est bon, je vais utiliser le fonction ut8_encode je pense.

    Mais j'aimerais savoir, le problème avec UTF-8 est a cause de notepad++ ou de ma config XAMPP. Car si vous savez comment configurer XAMPP pour ca je veux bien le faire.

    Merci.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    De l'éditeur, donc Notepad++.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut
    Bonjour,

    Alors je vais tout migrer sur PHPEclipse.

    Je vous remercie pour vos réponses.

    Bonne journée.

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

Discussions similaires

  1. [AC-2003] Problème de caractères inconnus
    Par kervin dans le forum Access
    Réponses: 3
    Dernier message: 04/11/2012, 10h56
  2. Problème de caractère ?
    Par Leishmaniose dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 07/11/2006, 17h29
  3. problème de caractères clavier!!!
    Par brunetc dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/06/2005, 13h39
  4. [SQL Server] problème de caractères spéciaux
    Par mbibim63 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 02/06/2005, 18h38
  5. [MiniPascal] Problème de caractères accentués
    Par Clandestino dans le forum Autres IDE
    Réponses: 3
    Dernier message: 03/10/2004, 13h12

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