Php, Html, problème d'accents dans mon livre d'or.

Résolu/Fermé
Signaler
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
-
Bonjour,

Je tente actuellement un premier pas en php en réalisant un livre d'or pour mon site (cf lien ci-dessous : site)...
J'ai donc, avec mon bloc notes, enregistré toutes mes pages html et php sous l'encodage utf-8.
Chacune de mes pages comporte la balise méta :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

J'ai un fichier config.php qui contient le code suivant:
<?php
define("DB_SERVER","monserveurchez.1and1.com");
define("DB_NAME","mabase");
define("DB_LOGIN","madbobase");
define("DB_PASS","codesecret");
define("DB_ENC","UTF8");
?>

Le code de ma page "livredor.php" est le suivant :
<?php
require "config.php";
mysql_connect(DB_SERVER,DB_LOGIN,DB_PASS);
mysql_select_db(DB_NAME);
mysql_query("SET NAMES UTF8");
if(!empty($_POST)){
	extract($_POST);
	$ip=$_SERVER["REMOTE_ADDR"];
	$message=htmlentities($message);
	$sql="INSERT INTO lo_mess (pseudo,mail,message,ip) VALUES ('$pseudo','$email','$message','$ip')";
	mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}
?>
<form method="post" action="livredor.php">
	Pseudo : &nbsp <input type="text" name="pseudo"/> Adresse Mail : <input type="text" name="email"/><br/><br/><br/>
	Message : <br/>
	<textarea name="message" rows="5" cols="70"></textarea><br/><br/>
	<input type="submit" value="envoyer"/>
</form><br/>
<HR Width=80%> 
<?php
$sql="SELECT * FROM 'lo_mess' ORDER BY id DESC";
$req= mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data=mysql_fetch_assoc($req)){
	mb_internal_encoding('UTF-8'); 
	echo "<H5>".$data["pseudo"]. "&nbsp &nbsp " .date("Y/m/d")."</H5>";
	echo "<H4>".utf8_decode($data["message"])."</H4><HR Width=80%>";
}
mysql_close();
?>

Je n'ai pas écris ce code, j'ai juste ajouté ou modifié ce qui est en gras.
Ma base de donnée est construite en interclassement utf8_unicode_ci, tous les champs de cette base sont dans le même interclassement.
Or, lorsque j'essaie de mettre un commentaire sur mon livre d'or, les accents ne sont pas pris en compte et sont affichés comme ceci :
Super ce çite, j'aème beà ucoùp... 

Grrrr!
Que puis-je donc faire pour que les commentaires s'affichent correctement???
Merci d'avance


2 réponses

Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 667
Pardon j'oubliais le lien : Cliquez ICI
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 667
Bonjour,

Ah, tiens? un sujet ou je cause seul...

Bon c'est pas grave, je revenais juste pour prévenir que j'ai trouvé ce qui cloche dans mon code...

'Fectivement, tout est bien codé avec des utf8 un peu partout, je n'en ai oublié aucun! Peut être y en a t'il un peu trop, mais on n'est jamais trop prudent.
Le souci vient de :
$message=htmlentities($message);

Et ben ouais! htmlentities, fonction php bien pratique, me "dézencode" mon utf8, la sale bête...
Donc, si vous rencontrez actuellement le même souci, au lieu de chercher partout sur le net, la solution est de remplacer :
$message=htmlentities($message);
par :
$message=htmlentities($message, ENT_QUOTES, "UTF-8");

Bonne journée