Aller au contenu

Problème de caractères


theprogrammeur

Sujets conseillés

Bonjour

Mon site est encodé en UTF-8 et le problème est que, lorsqu'on poste un nouveau message dans le livre d'or, tous les accents sont remplacés par des trucs comme "A@". Pourtant, juste après la connection à la BDD, j'ai mis cette ligne:

mysql_query("SET NAMES UTF8");

D'où peut provenir le problème?

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

J'ai utilisé SET NAMES juste après la connection à la BDD, juste avant l'insertion d'un nouveau message dans la BDD et juste avant la récupération des messages.

Seulement, les caractères sont mal encodés dans la BDD (j'ai été le voir dans PHPMyAdmin) et lorsque je les modifie avec la partie admin en remplaçant les caractères "A©" par les bons caractères (comme é, è, î), il n'y a plus de problème.

Je ne peux quand même pas modifier manuellement tous les messages postés, comment régler ce problème?

Lien vers le commentaire
Partager sur d’autres sites

Toutes les pages de mon site sont en UTF-8, encodées grâce à la fonction utf8_encode de PHP.

Vous avez ceci dans votre section <head> ?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Modifié par binarygirl
Lien vers le commentaire
Partager sur d’autres sites

En effet, j'ai mis cette balise:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /

De plus, dans toutes les pages j'ai mis ceci:

header('Content-Type: text/html; charset=utf-8');

Mais je vous rappelle que toutes les pages fonctionnnent bien, c'est juste quand un visiteur poste un nouveau message dans le livre d'or qu'il y a des erreurs dans les caractères accentués. Et lorsque je les corrige via la zone d'admin, il n'y a plus de plroblèmes. C'est donc lors de l'encodage, du textarea du livre d'or jusqu'à la BDD qu'il y a un problème.

Avez-vous besoin du code du livre d'or???

Lien vers le commentaire
Partager sur d’autres sites

Voici le code du livre d'or:

$connection = mysql_connect("localhost", "root", "");
mysql_select_db("data_base");
mysql_query("SET NAMES UTF8");

//Si message envoyé

if (isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['verif_code']) AND !Empty($_POST['verif_code']))
{
//Pour code anti-robot (captcha)
if($_POST['verif_code']==$_SESSION['aleat_nbr']) {

$pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // sécurité

$message = htmlentities($_POST['message'], ENT_QUOTES); // aussi pour le message
$message = nl2br($message); //\n --> <br />


/*TRANSFORMATION DU BBCODE
-----------------------------------------------------------------*/

$message = str_replace(':bad:','', $message);
$message = str_replace(':sourire:', '', $message);
$message = str_replace('', '', $message);
$message = str_replace(':mort:', '', $message);
$message = str_replace(':pfff:', '', $message);
$message = str_replace(':sourire2:', '', $message);
$message = str_replace(':fun:', '', $message);
$message = str_replace(':euh:', '', $message);
$message = str_replace('', '', $message);
$message = str_replace(':lunettes:', '', $message);
$message = str_replace(':pirate:', '', $message);

//Mise en forme du texte
//gras
$message = preg_replace('`\[gras\](.+)\[/gras\]`isU', '[b]$1[/b]', $message);
//italique
$message = preg_replace('`\[italic\](.+)\[/italic\]`isU', '[i]$1[/i]', $message);
//souligné
$message = preg_replace('`\[souligne\](.+)\[/souligne\]`isU', '[u]$1[/u]', $message);

// Enregistrement
mysql_query("SET NAMES UTF8");
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}
else {//Si mauvais code
echo'Votre code de confirmation n\'est pas bon ! Merci de réessayer.
}
}

Ca vous aide???

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...