PHP et UTF-8

PHP et UTF-8 - PHP - Programmation

Marsh Posté le 20-03-2014 à 15:08:16    

Bonjour,
je ne comprend pas.
- J'ai la base en utf8_general_ci.
- Avec mon éditeur de texte (notepad++) j'ai converti chaque page en utf-8(sans BOM).
- Dans ma page index.php (qui est la seul de mon site étant donné que je passe les autres a l'aide d'une fonction :" include (verifPage($_GET['page'])) " )
j'ai bien <meta charset="utf-8" /> dans le <head>
- Dans le htaccess j'ai :
     SetEnv PHP_VER 5
     AddDefaultCharset UTF-8
     AddCharset UTF-8 .html
 
Mais quand je stock mes variables dans la base de données que je met à jour via :

Code :
  1. class clVar{
  2. public $FR;
  3. public $EN;
  4. public $IT;
  5. }
  6. function MAJVariable2($nomVar, $Base){
  7. $sortie = new clVar();
  8. //MAJ des variables $ActuDroiteFR, $ActuDroiteEN, $ActuDroiteIT
  9. $sql9 = "SELECT `Nom`,`FR`,`EN`,`IT` FROM `table` where Nom = '".$nomVar."'";
  10. foreach  ($Base->query($sql9) as $row) {
  11.  $sortie->FR  = utf8_encode($row["FR"]);
  12.  $sortie->EN  = utf8_encode($row["EN"]);
  13.  $sortie->IT  = utf8_encode($row["IT"]);
  14. }
  15. //MAJ Variable $ActuDroite après clique sur bouton Modifier
  16. if (isset($_POST["ModifVar"])){
  17.  if($nomVar != "default" ){
  18.   $sql1 = "UPDATE table SET FR= '".utf8_decode($_POST["resultFR"])."',EN= '".utf8_decode($_POST["resultEN"])."', IT= '".utf8_decode($_POST["resultIT"])."' WHERE Nom= '".$nomVar."'";
  19.   $req1=$Base->exec($sql1);
  20.   header('Location: ./index.php?page=38');
  21.  }
  22. }
  23. return $sortie;
  24. }


il stock parfaitement les à, é et è mais par contre les œ il n'y arrive pas. Et ne parlons pas des signes japonais.
 
Qu'est-ce que j'ai oublié?
 
PS : j'ai essayé de renseigner la variable directement via phpmyadmin, là ça stock bien mais quand j’écris via <?php echo $maVar; ?> il m'écrit même pas  "éuvre" à la place de "œuvre", j'ai juste droit à : "uvre"
 
 
Pour plus de détails voici le code de la page de modification des variables:

Code :
  1. <?php
  2. $langue = $_SESSION['Lang']);
  3. if ((isset($_POST["ValSelVar"])) || (isset($_POST["ModifVar"])))
  4. {
  5.  if(isset($_POST["ValSelVar"])) $_SESSION['VariableCourante']=$_POST["SelVar"];
  6.  $result=MAJVariable2($_SESSION['VariableCourante'],$dbh);
  7.  $resultFR=$result->FR;
  8.  $resultEN=$result->EN;
  9.  $resultIT=$result->IT;
  10. }
  11. ?>
  12. <div id="Corps">
  13. <table id="tableGestionSite" BORDER=2>
  14.  <th align="center" colspan="5">
  15.   Modifier n'importe quelle variables
  16.  </th>
  17.  <tr align="center">
  18.   <form action="./index.php?page=38" method="post" enctype="multipart/form-data">
  19.    <td  colspan="5">
  20.     <select id="idSelVar" name="SelVar">
  21.      <option value="default">....Choisissez une variable....</option>
  22.      <?php
  23.       $sql0 = "SELECT `Nom`,".$langue." FROM table order by Nom";
  24.       foreach  ($dbh->query($sql0) as $row)
  25.       {
  26.        echo "<option value='".$row['Nom']."' ";
  27.        if(isset($_POST['SelVar']))
  28.        {
  29.         if($_POST['SelVar']==$row['Nom'])
  30.         echo "selected";
  31.        }
  32.        echo ">".$row['Nom']."</option>";
  33.       }
  34.      ?>
  35.     </select>
  36.     <input type="submit" name="ValSelVar" value="Sélectionner" />
  37.    </td>
  38.   </form>
  39.  </tr>
  40.  <tr>
  41.   <form action="./index.php?page=38" method="post" enctype="multipart/form-data">
  42.    <td>
  43.     FR<br/>
  44.     EN<br/>
  45.     IT<br/>
  46.    </td>
  47.    <td  colspan="3">
  48.     <input size="45" type="text" name="resultFR" value="<?php echo $resultFR; ?>" />
  49.     <input size="45" type="text" name="resultEN" value="<?php echo $resultEN; ?>" />
  50.     <input size="45" type="text" name="resultIT" value="<?php echo $resultIT; ?>" />
  51.    </td>
  52.    <td align="center">
  53.     <input type="submit" name="ModifVar" value="Modifier" />
  54.    </td>
  55.   </form>
  56.  </tr>
  57. </table>
  58. </div>

Reply

Marsh Posté le 20-03-2014 à 15:08:16   

Reply

Marsh Posté le 20-03-2014 à 16:52:41    

Parce que malgré tout cela tu n'as toujours pas demandé à MySQL de travailler en UTF8.
 
Envoi ca a chaque connexion pour lui demander explicitement de tourner en UTF-8:
 
SET NAMES UTF8
 
 
Et ca devrait le faire.

Reply

Sujets relatifs:

Leave a Replay

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