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. 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');
    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 
        }