[RESOLU] Problème d'encodage et base de données

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème d'encodage et base de données

Re: Problème d'encodage et base de données

par camo.mille » 15 juil. 2015, 07:31

Aaaaah ! Un grand M E R C I !!! C'est tout bon :)

Re: Problème d'encodage et base de données

par tof73 » 14 juil. 2015, 22:45

la connexion étant faite avec pdo, il faut aussi utiliser pdo pour exécuter SET NAMES UTF8

si les données n'ont pas été ajoutées par un fichier en utf8 dans une page en utf8, alors aucune méthode ne permettra d'accéder correctement à ces données par la suite. il faut refaire correctement le processus d'ajout.

Problème d'encodage et base de données

par camo.mille » 14 juil. 2015, 22:35

Bonjour tout le monde,

Je suis confrontée à un problème décrit moulte fois sur les forums mais pourtant je ne trouve pas de solution pour moi.

J'ai des losanges-point d'interrogation à la place de mes accents sur les éléments récupérés de ma base de donnée et / ou carrément des variables qui contiennent des accents qui ne s'affichent pas.

Je gère ma base de donnée avec Sequel Pro. Il me semble que tout est correct, encodé en utf-8- unicode, et collation : utf-8_general_ci. Les champs sont en utf-8. Les pages sont enregistrées en utf-8, et déclarées en utf-8.
J'ai lu que placer : mysql_query("SET NAMES UTF8"); règlait souvent le problème, mais je n'arrive pas à le mettre.

Erreur :
Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /home/httpd/vhosts on line 47 Warning: mysql_query(): A link to the server could not be established in /home/httpd/vhosts/ on line 47

Voici mon code :

Un GRAND merci pour vos lumières.

Code : Tout sélectionner

<?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <link rel="stylesheet" type="text/css" href="../../css/style.css" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> (....) <?php ini_set('default_charset', 'UTF-8'); // Connexion à la base de données try { $bdd = new PDO('mysql:host=****;dbname=****_ch', '*****_ch', '$******'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT * from T_MEMBRES order by Prenom asc'); //Affichage de la liste des membres while ($donnees = $reponse->fetch()) { print(" <a class=\"liste\" href=\"editMembres.php?id=".$donnees['id']."\"> ".$donnees['Prenom']." ".nl2br(htmlentities($donnees['Nom']))." </a> "); } $reponse->closeCursor(); ?> (...) <?php if(!isset($_GET['id'])) { (...) } else { function nettoyerChaine($chaine) { $caracteres = array( 'À' => 'a', 'Á' => 'a', 'Â' => 'a', 'Ä' => 'a', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ä' => 'a', '@' => 'a', 'È' => 'e', 'É' => 'e', 'Ê' => 'e', 'Ë' => 'e', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', '€' => 'e', 'Ì' => 'i', 'Í' => 'i', 'Î' => 'i', 'Ï' => 'i', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'Ò' => 'o', 'Ó' => 'o', 'Ô' => 'o', 'Ö' => 'o', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'ö' => 'o', 'Ù' => 'u', 'Ú' => 'u', 'Û' => 'u', 'Ü' => 'u', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'µ' => 'u', 'Œ' => 'oe', 'œ' => 'oe', 'ë' => 'e', '$' => 's'); $chaine = strtr($chaine, $caracteres); $chaine = preg_replace('#[^A-Za-z0-9]+#', '-', $chaine); $chaine = trim($chaine, '-'); $chaine = mb_strtolower($chaine); return $chaine; } // récupération des données de la table $reponse = $bdd->query('SELECT * FROM T_MEMBRES WHERE id='.$_GET['id'].''); while ($donnees = $reponse->fetch()) { $debutnom = substr($donnees['Nom'], 0, 3); $debutprenom = substr($donnees['Prenom'], 0, 3); $nomphoto = $debutnom . $debutprenom ; $nomphoto = nettoyerChaine($nomphoto); $nomphoto = $nomphoto . ".jpg"; // photos et informations générales print(" <h1>".$donnees['Prenom']."</h1> (...)