Bonjour à vous.

Voilà j'ai un problème avec mon encodage UTF-8 dans une url, enfaite ça donne ça :

index.php

<?php
session_start();
header('Content-Type: text/html; charset=UTF-8');

// .... ect
?>


mon header.php

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="keywords" content="Wiki, jeu, jeux.." />
        <meta name="description" content="Wiki" />
        <meta name="robots" content="index,follow" />

        <title><?php echo $aSite["head"]["titre"]; ?></title>
        <link rel="stylesheet" href="<?php echo $aSite["lien"].$aSite["head"]["css_url"]["basic_style"];?>" type="text/css" />
        <?php
          foreach($aSite["head"]["js_url"] as $val)
          {
           echo '<script type="text/javascript" language="javascript" src="'.$val.'"></script> ';
          }
          ?>
    </head>
    <body>
        <div id="wrapper">


et avec ça je fais dans une page une recherche ( donc en get ) et lorsque je tape dans la barre de recherche "Caractéristique"
il m'affiche donc :
a écrit :

search?q=Caractéristiques

et sur la page d'arrivé il doit m'afficher (?q=)
donc :
Recherche.php ( controleur )

<?php

  if( isset( $_GET["q"] ) && ( $_GET["q"] != NULL ) )
  {
    $query = stripslashes(htmlentities($_GET["q"], ENT_QUOTES));
    echo $query;
      include(MOD.'recherche.php');
           $aSearchResult = $adWiki->Search($query);
           $TotalResult = count($aSearchResult);
      include(VUES.'recherche.php');
  }
  else
  {
     echo '<div id="erreur">Recherche inconnue, redirigez vous vers <a href="/home">l\'index</a></div>';
  }
?>

Recherche.php ( Vue )


<div align="center">
 <?php
 if($TotalResult > 0)
 {
  if($TotalResult == 1)
  {
   echo  'La Recherche a donnée : <b>'.$TotalResult.'</b> résultat';
  }
  else
  {
   echo  'La Recherche a donnée : <b>'.$TotalResult.'</b> résultats';
  }

   echo  ',faire une autre recherche ? <a href="./home" style="text-decoration:underline;">oui</a>
          <br /> <b>Un problème avec la recherche ? contactez le staff ou allez voir la faq.</b><br /><br />

          <table cellpadding="0" border="0" cellspacing="0" style="width:100%" id="tableau_wikiad">
            <thead>
               <tr class="masthead">
                   <th class="header" style="width:225px;"><a>Titre</a></th>
                   <th class="header" style="width:150px"><a>Par</a></th>
                   <th class="header" style="width:150px"><a>Type</a></th>
                   <th class="header" style="width:100px"><a>Vu</a></th>
                   <th class="header" style="width:170px"><a>Date</a></th>
                </tr>
            </thead>
            <tbody>';

      for($i = 1; $i <= $TotalResult; $i++)
      {
       $Titre = str_replace(' ', '_', $aSearchResult[$i]["titre"]);

       if($i % 2 && $i != $TotalResult)
       {
         echo '<tr class="conteneur_fonce">';
       }
       else
       {
         echo '<tr class="conteneur_clair">';
       }
       echo'
                <td>&nbsp;<a href="./wiki/'.$Titre.'" style="color:#5D1F88;">'.$aSearchResult[$i]["titre"].'</a></td>
                <td>&nbsp;'.$aSearchResult[$i]["auteur"].'</td>
                <td>&nbsp;'.$adWiki->TypeModif($aSearchResult[$i]["type"]).'</td>
                <td>&nbsp;'.$aSearchResult[$i]["vu"].'</td>
                <td>&nbsp;'.$aSearchResult[$i]["date"].'</td>
               </tr>
            ';


      }
   echo '</tbody></table>';
 }
 else
 {
     echo "<b>'".$query."' n'a pas été trouvé.</b> <div id='erreur'>Veuillez vérifier l’orthographe de votre mot-clé ou affinez vos critères de recherche. Le moteur de recherche est actuellement au stade de beta et est en cours de révision. Veuillez nous excuser pour ce désagrément. </div>";

 }
      ?>
</div>

Mais le problème c'est que $query m'affiche Caractéristiques .
j'ai beau mettre utf8_encode ou encore htmlentities() ou htmlspecialchars() je ne vois pas de solutions.

par contre pour la DB j'ai bien fais SET NAMES UTF-8 donc il m'affiche bien les accents venant de la DB.

Voilà si vous pouviez m'aider Smiley smile je vous remercie d'avance.
Modifié par Dearth (10 Nov 2010 - 13:50)
Sinon, essai de remplacer

$query = stripslashes(htmlentities($_GET["q"], ENT_QUOTES));


par

$query = stripslashes(htmlentities($_GET["q"], ENT_QUOTES, 'UTF-8'));


Si tu regardes la doc PHP, htmlentities encode en ISO par défaut

a écrit :
Actuellement, le jeu de caractères ISO-8859-1 est utilisé par défaut.
Un grand merci Kenor c'était bien ça Smiley smile

Mikachu : dans mon header.php j'ai bien <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ^^

Edit :
Je trouve pas le bouton résolu ou autre chose dans le genre .
Modifié par Dearth (10 Nov 2010 - 13:52)
Salut,

Oui, ça c'est la déclaration d'encodage DANS le fichier, mais ce n'est pas l'encodage DU fichier, cela se règle dans ton éditeur de texte. Dans Notepad++ par exemple, tu as un menu "Encodage" dans lequel il t'es donné des fonction d'encodage ou de conversion d'encodage pour ton fichier. Et si par mégarde ton fichier est encodé en ANSI, même avec une déclaration en utf-8 dans une balise méta, tu auras des soucis d'affichage. Plus d'infos sur les liens que je t'ai fourni ce matin.

Pour le résolu, il te suffit d'éditer ton message initial et d'ajouter la mention [Résolu] dans le titre, tout simplement. Smiley cligne