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 :

Encodage utf8 [Encodage]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut Encodage utf8
    Bonjour,

    je réalise un site de foot. sur ce site, j’intègre des actus du club. Mon site est en utf8 dans mon head, ma bdd est également en utf8.

    Lorsque j'insert une actu via un formulaire, tous les accents sont remplacés par des symboles dans ma bdd de plus, lorsque j'ais ('l'aide') en bdd j'ai ('l\'aide') du coup quand j'affiche mes actus sur le site j'affiche bien mes accents mais j'ai ('l\'aide') a la place de ('l'aide').

    Autre problème, je crée un flux rss sur les actus, et là je récupère les symboles de ma bdd qui ne sont pas traduits en utf8 hors je suis bien en utf8.

    Enfin pour moi l'encodage a toujours été un sacré bordel!!!!!!

    voici le code lorsque j'insert mes actus en bddd
    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
    18
    19
    if(!empty($_POST['titre']) && !empty($_POST['texte'])){
    	$sql=$cnx->query("SELECT * FROM dirigeants WHERE IDDirection = '".$_SESSION['id']."'") or die('ERROR SQL!'.print_r($cnx->errorInfo()));
    	$row=$sql->fetch(PDO::FETCH_ASSOC);
    	$inserActu= $cnx->prepare('INSERT INTO actualites (Titre, Texte, Auteur) VALUES(:titre, :texte, :auteur)') or die('ERROR INSERT!'.print_r($cnx->errorInfo()));
    	$inserActu->execute(array(
    		"titre"=>$_POST['titre'],
    		"texte"=>$_POST['texte'],
    		"auteur"=>$row['NomDirigeant']." ".$row['PrenomDirigeant']
    	));
    	echo '<script language="Javascript">
    		document.location.replace("actu.php?err=1");
    	</script>';
    	//header('Location: actu.php?err=1');
    }else{
    	echo '<script language="Javascript">
    		document.location.replace("addActu.php?err=1");
    	</script>';
    	//header('Location: addActu.php?err=1');
    }
    et voici le code qui génère le flux rss
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    require('../config/config.inc.php');
    $cnx->exec("SET CHARACTER SET utf8");
    echo '<?xml version="1.0" encoding="UTF-8"?>';
     
    $sql = $cnx->query("SELECT IDActu, Titre, Texte, DATE_FORMAT(DateActu, '%D, %d %M %Y %H:%i:%s') AS DateA, Auteur FROM actualites ORDER BY DateA DESC LIMIT 0,9") or die(print_r($cnx->errorInfo()));
     
    ?>
    <rss version="2.0">
        <channel>
            <title>Actualité ASBelleau</title>
            <description>Actualité du club</description>
            <link>http://www.asbelleau.fr</link>
    		<?php
    		while($row=$sql->fetch(PDO::FETCH_ASSOC))
    		{?>
    	        <item>
    	            <title><?php echo html_entity_decode(html_entity_decode($row['Titre']));?></title>
    	            <description><?php echo html_entity_decode(html_entity_decode($row['Texte']));?></description>
    	            <pubDate><?php echo $row['DateA'];?></pubDate>
    	            <author><?php echo $row['Auteur'];?></author>
    	            <link>http://www.asbelleau.fr/index.php</link>
    	        </item><?php
    	    }?>
        </channel>
    </rss>

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.
    Pour les antislashes, utilisez :
    Pour le 2nd problème, rien compris !

  3. #3
    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
    N'oublie pas de configurer l'encodage de la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cnx = new pdo('mysql:host=xxxxx;dbname=xxxxx', 'xxxx' , 'xxxxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    Pour les \ parasite, ce sont sûrement les magic quotes qui sont toujours activés sur ton serveur :
    http://www.php.net/manual/fr/securit....disabling.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    Lorsque je met ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cnx = new pdo('mysql:host=xxxxx;dbname=xxxxx', 'xxxx' , 'xxxxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    je n'ai plus les accents qui s'affiche sur mon site mais des symboles. Je pense que ça doit être ré encodé non?

    Pour mon 2eme prob,

    je veux faire un fulx rss de mes actu qui sont enregistré dans ma bdd, seulement mon fichier xml est en utf8 ainsi que ma bdd, mes fichiers php et html également (je blinde tous en utf8 ^^)
    Le prob c'est que j'ai des symboles au lieu des accents.
    je ne sais plus quoi faire

  5. #5
    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
    Quel genre de symboles as-tu ?

    Vérifie que tes fichiers .php sont bien encodés en UTF8.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    Les membres du club ont voté, lors de l'assemblée générale du 31 Mai 2014, pour une augmentation de la licence qui passe de 60€ à 70€. Pour les joueurs qui restent au club et pour les nouveaux arrivant, vous aurez la possibilité de payer la cotisation en plusieurs fois, il suffit d'en parler au président.
    Voici le texte que j'obtiens en modifiant ma connexion à la bdd.

    Tous mes fichier sont encodé en utf8.

    A chaque création de fichier dans sublime text 2 :
    file>save with encoding>utf-8

    dans le head de mes pages : <meta charset="UTF-8">

    bdd>InnoDB et utf8_general_ci

  7. #7
    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
    bdd>InnoDB et utf8_general_ci
    L'interclassement ne joue pas dans l'affichage.

    Ce que tu nous montres c'est de l'UTF8 affiché comme si c'était dans l'ANSI.
    Est-ce que dans ton navigateur, l'encodage se met bien en UTF8 quand tu es sur la page?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    Comment je vois si le navigateur est en utf8 (je suis pas sûr d'avoir compris ce que tu me demande )

    juste une chose, dans ma bdd le texte situé au dessus est identique avec les même symboles, problème d'insert???

  9. #9
    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
    Dans ton navigateur tu dois avoir un menu qui te montre l'encodage utilisé pour lire la page.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    je venais de modifier le poste précédent :
    uste une chose, dans ma bdd le texte situé au dessus est identique avec les même symboles, problème d'insert???
    Mon navigateur est bien en utf8 (jamais vue ce menu!!!!);

  11. #11
    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
    Oui dans ta base de données, tu dois voir les accents.
    Donc effectivement si les données n'ont pas été correctement inserées, elles ne seront pas bien lues.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 180
    Points : 58
    Points
    58
    Par défaut
    Oui effectivement ton code pour se connecter à la base de donnée fonctionne, en fait je testais avec les éléments déjà présent donc forcément ça ne pouvait pas fonctionner correctement.
    J'ai tous retiré puis recommencé et là....magie !
    j'ai résolu tous mes problèmes.

    Je ne savais pas qu'il fallait indiquer l'encodage dans la connexion à la bdd, j'utilise pdo depuis pas mal de projets, j'ai visionné pas mal de tuto mais jamais vue ça !!!! en tous cas je ne me ferais plus avoir ^^ merci pour ton aide (je remarque que tu aide sur pas mal de sujet, tous mes postes tu es là lol)

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

Discussions similaires

  1. [Encodage] utf8 image affichage
    Par oim dans le forum Langage
    Réponses: 7
    Dernier message: 05/04/2007, 14h24
  2. Pb encodage utf8
    Par rems14 dans le forum Outils
    Réponses: 1
    Dernier message: 18/02/2007, 19h47
  3. [Tableaux] Encodage utf8 d'un tableau
    Par lodan dans le forum Langage
    Réponses: 8
    Dernier message: 28/08/2006, 13h57
  4. Problème d'encodage UTF8
    Par vg33 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 19h28
  5. fonction native d'encodage utf8 ?
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/05/2006, 17h27

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