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 :

incompréhension utf8, caractère é.


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut incompréhension utf8, caractère é.
    Bonjour,

    Je me fais un p'tit blog home-made. Dans l'espace d'administration, j'ai des formulaires qui enregistrent dans Mysql, très original

    La page est en utf8. Avant d'envoyer les données, j'utilise utf8_encode sur les variables. La base de données est en utf8. Chaque table est en utf8.

    Pourtant, mes caractères accentués passent pas : le é est affiché comme ça é.

    Je comprends pas. Je ne veux pas filtrer les variables avec htlmentities, parce que je le fait à l'affichage. Mais j'aimerais bien que mes données apparaissent correctement dans PHPMyAdmin.

    Ya un rapport avec magic_quotes_gpc qui est à on chez Olympe Network ?
    Je ne comprends pas...

  2. #2
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut
    Le code.

    La page xhtml (sélection) :
    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
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    ...
     
    <form action="<?php echo basename(__FILE__); ?>" method="post" id="form_critik" class="form">
            	<fieldset>
            		<legend>Ecrire une nouvelle critique :</legend>
                    <br/>
                    <p>	<label for="crit_titre_livre">Le titre du livre :</label>
                    	<input type="text" name="crit_titre_livre" id="crit_titre_livre" size="50" value="<?php echo (isset($_POST['crit_titre_livre'])) ? $crit_titre_livre : '' ?>" />
                  	</p>
                    <br/>
                    <p>	<label for="crit_auteur">Auteur(s) :</label>
                    	<input type="text" name="crit_auteur" id="crit_auteur" size="50" value="<?php echo (isset($_POST['crit_auteur'])) ? $crit_auteur : '' ?>" />
                   	</p>
     
     
    ...
     
                    <input type="submit" value="sauvegarder" />
    ...

    Et le traitement : (pas de filtre sécuritaire, je rajouterai après) :
    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
    27
    28
    29
    30
    31
    32
    33
    34
     
    if (isset($_POST['crit_tdm']))
    {
    	try		
    	{	
    		$connexion = new PDO('mysql:host=******;dbname=*****', USER, MO2PASS);
    		$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    		$crit_titre_livre = utf8_encode($_POST['crit_titre_livre']);
    		$crit_auteur = utf8_encode($_POST['crit_auteur']);
    		$crit_date_publi = utf8_encode($_POST['crit_date_publi']);
    		$crit_date = utf8_encode($_POST['crit_date']);
    		$crit_image = utf8_encode($_POST['crit_image']);
    		$crit_ht = utf8_encode($_POST['crit_ht']);
    		$crit_text = utf8_encode($_POST['crit_text']);
    		$crit_tdm = utf8_encode($_POST['crit_tdm']);
    		$crit_edit = utf8_encode($_POST['crit_edit']);
     
    		$sql = "INSERT INTO critiks (crit_titre_livre, crit_auteur, crit_date, crit_img, crit_ht, crit_text, crit_tdm, crit_date_publi, crit_editeur) VALUES ('$crit_titre_livre', '$crit_auteur', '$crit_date', '$crit_image', '$crit_ht', '$crit_text', '$crit_tdm', '$crit_date_publi', '$crit_edit')";
     
    		$nbre = $connexion->exec($sql);
    		if ($nbre === false)
    		{
    			throw new Exception('La requête d\'insertion a retouné false.');
    		}
    		$com = 'Nombre d\'enregistrement inséré : '.$nbre;
    	}
    	catch (Exception $e)
    	{
    		echo $e->getMessage();
    	}
    	$connexion=NULL;
    	$nbre=NULL;
    }

  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
    Pourquoi encoder tes variables en UTF8 si elles le sont déjà ?

    Vérifie que ton fichier est bien en UTF8 dans ton editeur de texte.

    Tu peux également lancer la requete SET NAMES 'UTF8' avant tes insertions.

  4. #4
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut
    Donc j'ai enlevé le utf8_encode. J'utilise Dreamweaver sans wysiwyg, en code. Je pense que les pages sont bien en utf8, car quand je fais nouveau, j'ai comme codage par défaut utf8, sans formulaire de normalisation unicode, ni signature BOM.

    Les caractères passent toujours pas.

    La collation c'est "utf8_general_ci", c'est ptet ça le pb. Je sais pas trop la quelle choisir.

  5. #5
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut
    J'ai essayé différentes collation :
    utf8_bin
    utf8_general_ci
    uf8_unicode_ci

    Mais ça change rien.

  6. #6
    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
    La collation ne controle pas les données qui sont présente dans la table, elle sert juste dans les comparaisons.

    As tu essayé de faire ce que je t'ai dit ?

  7. #7
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut
    Bien vu sabotage !

    Je connaissais pas cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try		
    	{	
    		$connexion = new PDO('mysql:host=*******;dbname=*******', USER, MO2PASS);
    		$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    		$connexion->query('SET NAMES "utf8"');
     
                    ....
    Merci beaucoup !

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

Discussions similaires

  1. UTF8 caractère compréhension
    Par omelhor dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2014, 15h45
  2. [PHP-JS] passer de UTF8 aux caractères grecs ?
    Par caillon dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2006, 11h50
  3. Guillemets, caractères spéciaux et UTF8
    Par nicorama dans le forum JDBC
    Réponses: 1
    Dernier message: 13/11/2006, 18h28
  4. Les caractères UTF8 en C
    Par alexparis dans le forum C
    Réponses: 3
    Dernier message: 06/03/2006, 19h06
  5. Réponses: 15
    Dernier message: 24/02/2006, 15h17

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