Page 1 sur 1

Problèmes de Codage de caractères

Posté : 23 mai 2011, 11:57
par Sabrina
Bonjour,

J'ai fais une interface de recherche des livres venant de ma table "livres" d'une base de données "Biblio", Ma table contient des livres Français et arabes.
à ne pas oublier que j'ai remplacé tous les caractères (é,è,ç ..... ) par leur code (é .......) car j'avais un problème de codage..
Mon problème consiste à :
1. quand je fais ma recherche, si je saisis une chaine qui contient des caractères spéciaux par exemple un "é" , je n'aurai aucun résultat malgré que ca existe :(
et aussi
2. quand je fais ma recherche en arabe le résultat sera : "aucun résultat" malgré qu'il existe :? :?

Avez vous une idée ??

Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 12:09
par popy
"malgré que ça existe" ???

Quel est l'encodage de ton site ? Quel est l'encodage de la connection à mysql ? quel est l'encodage et la collation du champs de recherche ?

Tu utilises bien un LIKE pour faire la recherche ?

Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 12:29
par Sabrina
Le Codage utilisé dans tous les pages est : Utf-8 et En Mysql : utf8_bin.

voici une partie de mon code de recherche :
include "connexion.php";

$titre=  $_POST['titre'];
  $auteur=  $_POST['auteur'];
  $motscles= $_POST['motscles'];
  $cat= $_POST['categorie'];

if ($cat == 'livre') 
        {

$sql = 'SELECT * FROM livres ';  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  

if ($titre != "")
		{
		    // On selectionne les enregistrements contenant le mot clé dans les Titre ou l'auteur
	              $query = "SELECT distinct count(Titre) FROM livres
	               WHERE (Titre LIKE \"%$titre%\" ) ";
		
         	 $result = mysql_query($query) or die("Erreur : ".mysql_error()); 
             $row = mysql_fetch_row($result);
	         $Nombre = $row[0];

             // Si aucun enregistrement n'est retourné, on affiche un message adéquat
             if ($Nombre == "0") 
	          {
?>
	 	           <script language="javascript"> 
                     alert('Aucun résultat ne correspond à votre recherche');
                   </script>  
<?php 
               }
   // Sinon, on affiche le nombre d'enregistrements correspondant et les résultats eux-mêmes
            else 
              {
	             $query = "SELECT distinct Cote,Auteur,Titre,id FROM livres
	              WHERE (Titre LIKE \"%$titre%\" )    
	              ORDER by titre ASC";
		         $result = mysql_query($query);
	 // Si un seul enregistrement est trouvé, on affiche un message au singulier
	            if ($Nombre == "1") 
	              {
?>		            <div class="header_01">
      	            <P><?php  echo "<a name=\"#resultat\"><h2><p> &nbsp; </p>&nbsp; <p>Un r&eacute;sultat trouv&eacute;</P></h2></a> <p>"; ?></P>
                    </div>
<?php 
	               }
		    // Dans le cas contraire le message est au pluriel...
               else 
	               {
?>
		            <div class="header_01">
		               <p>  <?php  echo "  <a name=\"#resultat\"><h2>R&eacute;sultat: $Nombre r&eacute;sultats trouv&eacute;s</h2></a>	<p>"; ?>  </p>
		            </div>
                      <p>
<?php 
	               }

           while($data = mysql_fetch_array($result))
	            {

               $id =  $data['id'];
		
		           echo "	<p>\n
		            <p align = justify> <ul> <li> <b> <a href='Detail.php?id=$id'> $data[Titre] </a></b></li></ul></p> 
					 <p>&nbsp;</p>   \n
		            <p>\n
                    ";
					
	             }//while
        }
}


Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 12:36
par Sabrina
Et pour vous aider de plus :
J'ai essayer de faire ma recherche en remplaçant les caractères spéciaux par son cade ca marche bien c à d :
par exemple :
Je cherche un titre de livre qui contient le mot Génétique :
1. Si je met "Génétique" le résultat est : "aucun resultat trouvé"
2. Si je met "G&eacute;n&eacute;tique", ca marche et il m'affiche mon résultat.

Car dans ma base le "é" est écris par son code" &eacute;", Je pense que c ca mon problème mais j'ai pas de solution ???? :?
Que ce que je dois faire ??? :(

Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 12:50
par Dux
Salut,

utilises htmlentities() lors de la récupération des test $_POST
exemple $titre= htmlentities($_POST['titre']);

Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 13:03
par Sabrina
Je ai essayé d'utiliser " htmlentities" mais ca n'a pas encore marché :? :(

Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 13:13
par moogli
Salut,

il faut voir ce que tu a dans la table, dans le formulaire et ce que tu reçois.

me htmlentities ne devrais être utiliser que pour l'affichage (déja rien que pour gagner de la place dans la table et ensuite a l’édition ça peux être le brin, sans parler des recherches).

test ta requete sur la console mysql ou avec phpmyadmin.

au niveau charset il y a celui de la connexion, celui des tables, celui du fichier et celui que tu indique au navigateur sont il tous les mêmes ?


@+

Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 13:34
par Sabrina
Comment je peux vous faire voir ce que j'ai dans la ma table ??

et Comment je peux tester ma requête sur la console mysql ou avec phpmyadmin ??

et pour le codage il est le même par tous.

Re: Problèmes de Codage de caractères

Posté : 23 mai 2011, 14:55
par yannig
Bonjour,

Prière de ne pas rire!
J'ai un problème proche de celui exposé ici.
Soit une table contenant des champs avec des valeurs accentuées.
Si j'affiche les valeurs dans un tableau crée par requête sql les valeurs sont affichées correctement.
Si j'affiche la même valeur hors de ce tableau le code des caractères n'est pas bon.

J'ai regardé le lien qui appelle la page les données 'fautées' sont bien transmises correctement avec les accents.

Merci de nous dire comment retrouver les différents charset utilisés?
la base est en utf-8
si je change le charset dans le head de la page c'est l'inverse qui se produit. Je n'avais encore jamais remarqué cette bizarrerie.

Amitiés

Re: Problèmes de Codage de caractères

Posté : 21 juil. 2013, 19:14
par MisterArabic
Assalamu 3alaykum Sabrina,

Afficher correctement des données arabes extraites d'une table MySql :
PREMIERE PARTIE :

Police de caractère à choisir pour afficher les caractères arabes dans une table :

1. Créer une Table.

2. Dans le champ Interclassement, sélectionner "utf8_bin" comme langue d'affichage.

3. Enregistrer en cliquant sur Sauvegarder.


DEUXIEME PARTIE :

1. Ouvrir la page de résultats et repérer la ligne suivante :
mysql_select_db($database_MaBaseIci, $MaTableIci);

2. Copier les deux lignes suivantes immédiatement en dessous :
mysql_query("SET NAMES cp1256");
mysql_query("set characer set cp1256");

3. Modifier la ligne de charset pour "windows-1256" comme cela :
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />

4. Enregistrer.



Ma3a assalama,

Mister Arabic.