Php : problème pour convertir les accents.

Bonjour,

mes caractères sont en utf-8, et ne proviennent pas de base de données , par exemple :

<?php

$string = "éàù";

/*On détecte l'encodage :*/
echo mb_detect_encoding($riri); //Affiche UTF-8.

/*On convertit les accents :*/
echo htmlentities($string,EN_QUOTES,"UTF-8",true);

/*Affiche éàù au lieu de &eacute&agrave&ugrave*/


?>


Donc méme avec htmlentities, mes caractères ne sont pas convertis (meme quand je regarde le code source du résultat).

Une idée ?

Merci d'avance, cordialement.

2 réponses

  1. un exemple de solution:

    $tabl_conv = array("à"=>"& agrave;","â"=>"& acirc;","é"=>"& eacute;","è"=>"& egrave;","ê"=>"& ecirc;","î"=>"& icirc;","ï"=>"& iuml;","ö"=>"& ouml;","ô"=>"& ocirc;","ù"=>"& ugrave;");
      ////ATTENTION suprime l'espace entre & et la suite du codage html du caractère accentué
    //j'ai été obligé de le mettre sinon on ne voyait rien du codage html
    
    if($_POST[temp1] == "Poste"){ 
     $saisie=$_POST[nom]; 
      foreach($tabl_conv as $cle=>$value){ 
       $saisie=ereg_replace($cle,$value,$saisie);// ok fonctionne on voit les caract codés en html dans la boite d'alert JS 
      }
    0
    1. Bonjour,

      Tu n'as pas à convertir les accents.

      ton fichier (html ou php) doit etre encodé en utf8

      dans ton header, ton charset doit être en utf8 :

      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >


      si tu as des doutes sur le charset du serveur, tu peux créer un fichier .htaccess où tu ajoutes cette ligne :

      AddDefaultCharset	UTF-8


      si tu as une base de données, mettre toute ta base en interclassement
      utf8_unicode_ci


      et après la connexion à ta connexion mysql, tu ajoutes
      mysql_query('SET NAMES utf8');
      0