Aller au contenu

Sujets conseillés

Posté

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.

Posté

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?

Posté

Vous devez avoir au moins mySQL 4.1... est-ce le cas ?

Et bien sûr définir les tables avec le charset UTF-8 (par défaut ce serait sans doute latin1_swedish juste pour le jeu de caractères occidental)

Posté

J'ai MySQL 5.0.45

-Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)

-Interclassement pour la connexion: utf8_unicode_ci

Dans la BDD:

-Interclassement, utf8_general_ci

Faut-il modifier quelque chose???

Posté (modifié)
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
Posté

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???

Posté

Oui,

si possible au niveau de l'insert dans la base de données, voire du début de réception des données jusqu'à l'insert.

Posté

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???

Posté

Le problème s'est réglé de lui même. J'ai retapé tout le code du livre d'or dans un nouveau fichier et tout a été réglé (pourtant je n'ai rien changé).

Encore un mystère de l'informatique.

Veuillez vous connecter pour commenter

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



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