Probleme d'encodage
Résolu
bacly
Messages postés
20
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je viens vous expliquez mon probleme, actu je developpe un site sur WAMP et je compte le mettre en ligne dans peu de temps mais je remarque un probleme avec l'encodage. Si ya quelqu'un qui poura m'aider avec les étape afin de bien encoder mon site en utf-8.
*Voici ce que j'ai actuelement.
Coté HTML5
<meta charset='utf-8' />
Coté MySQL
J'ai defini l'interclassement à utf8_general_ci
Dans mes pages les caracteres accentués ne s'affichent pas s'ils sont recupérés dans la base. Merci pour votre aide. . .
Je viens vous expliquez mon probleme, actu je developpe un site sur WAMP et je compte le mettre en ligne dans peu de temps mais je remarque un probleme avec l'encodage. Si ya quelqu'un qui poura m'aider avec les étape afin de bien encoder mon site en utf-8.
*Voici ce que j'ai actuelement.
Coté HTML5
<meta charset='utf-8' />
Coté MySQL
J'ai defini l'interclassement à utf8_general_ci
Dans mes pages les caracteres accentués ne s'affichent pas s'ils sont recupérés dans la base. Merci pour votre aide. . .
3 réponses
-
dans ta base ils sont stockés comment les caractères accentués? normalement si tout va bien ils devraient ressembler à des trucs genre "é "
-
Bonjour
Si tout va bien, tes caractères accentués apparaissent normalement quand tu regardes at base avec phpMyAdmin.
Quand tu travailles en utf-8, il faut le dire à mysql au moment de la connexion, avec une requête SET NAMES 'UTF8' si tu travailles avec les fonctions classiques, ou en indiquant l'option qui va bien si tu travailles avec PDO -
Merci a tout le monde, j'ai eu une solution a mon proble, j'utilise PDO. Donc apres la connexion a la base on defini l'encodage comme ceci en entier.
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=base', 'root','');
$bdd->exec("SET CHARACTER SET utf8");
}
catch(Exception $e)
{
die('Erreur :' .$e->getMessage());
}
?>-
La manière correcte d'initialiser PDO pour utiliser utf8 est :
$bdd= new PDO('mysql:host=localhost;dbname=baset', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
C'est à dire que la commande SET NAMES utf8 doit être intégrée à l'initialisation et non pas exécutée séparément.
Mais il y avait un bug dans les premières versions de PDO qui faisait que ça ne marchait pas (MYSQL_ATTR_INIT_COMMAND n'était pas défini), et dans ce cas on peut utiliser ta méthode, mais ce n'est pas celle recommandée.
-