Php-html Problème d'accents é,ç,è,ù etc... [Résolu]

A voir également:ã© encoding phpã© php - Meilleures réponses Php ã© - Meilleures réponses Html/Php -caractères accentués et l'UTF8 - Conseils pratiques - PHP Php redirect - Conseils pratiques - PHP Php - Articles Undefined index php - Conseils pratiques - PHP Alert php ✓ - Forum - PHP

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 dans le titre de ce sujet... Grrrr!
Que puis-je donc faire pour que les commentaires s'affichent correctement???
Merci d'avance

Forum

A voir également:ã© encoding phpã© php - Meilleures réponses Php ã© - Meilleures réponses Html/Php -caractères accentués et l'UTF8 - Conseils pratiques - PHP Php redirect - Conseils pratiques - PHP Php - Articles Undefined index php - Conseils pratiques - PHP Alert php ✓ - Forum - PHP

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Sujet résolu....

En fait, le problème venait de mon utilisation de la fonction htmlentities, sans paramètres. La valeur par défaut de l'argument optionnel encoding est ISO-8859-1. D'où le conflit avec mon fichier en utf-8...
Nous pouvions chercher longtemps...

J'ai donc remplacé, dans le code donné ci-dessus, la ligne :
$message=htmlentities($message);
par :
$message=htmlentities($message, ENT_QUOTES, "UTF-8");


Pour plus de renseignements sur cette fonction.
Merci.
A+

Dire « Merci » 11

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61254 internautes nous ont dit merci ce mois-ci

Reply
réponses:
  • auteur

  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

A propos de utf8_decode():

 utf8_decode() décode la chaîne data, en supposant qu'elle est au format UTF-8, et la convertit au format ISO-8859-1.  

A voir ici: http://php.net/manual/fr/function.utf8-decode.php

Dans ton cas, tu multiplie des déclarations et conversion d'encodage pour rien.
Et surtout, au dernier moment tu convertis en ISO-8859-1.

Personnellement, la seule chose que je spécifie à ce niveau là, c'est la balide meta et l'encodage à l'enregistrement de mes fichiers PHP.
Pour MySQL, je créé directement mes BDD et table dans PhpMyAdmin et je laisse la valeur par défaut. J'ai aucun problème avec l'encodage.

Reply
réponses:
  • auteur

  • auteur

  • auteur

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed