PHP : textarea et encodage utf8

Résolu
Bonjour,
Mon formulaire contient un textarea. Lorsque je le soumets par le bouton "submit", il appelle un fichier php qui va enregistrer le contenu de ce textarea dans un fichier texte. L'utilisateur qui entre ses données dans le textarea doit utiliser des caract?ères exotiques. J'ai donc encodé ma page en utf8. Les contenus des input=text de mon formulaire s'enregistrent correctement mais pas le contenu de l'input=textarea.
Comment on peut gérer ce problème ?

Je vous remercie de votre aide.

10 réponses

  1. Je ne l'ai pas résolu... Mais j'ai résolu la question en supprimant mon textarea !!!
    1. tu as essayé avec la fonction utf8_encode ?
      1. et utf8_decode pour l'opération inverse ;)
    2. Oui, j'ai essayé, bien sûr. Mais dans mon cas, ça ne s'avère pas utile. En effet, le texte entré dans l'input text passe bien, sans besoin de utf8_encode. Je crois que le textarea pose problème. Une recherche sur google me montre que bien des gens ont du mal à gérer l'encodage pour les textes entrés dans un textarea.
      1. Si tes fichiers formulaire et texte sont en utf8 et que tu as des soucis, peut-être faut-il regarder l'encodage utilisé par le serveur php. Ou peut-être apache.
        1. Le serveur ne me semble pas y être pour quelque chose du fait que les contenus des input=text sont enregistrés avec les bons caractères.
      2. tu as précisé le jeu de caractère dans la section <head> de ton script?

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        1. et aussi la fonction htmlspecialchars( $text, ENT_COMPAT, "UTF-8") pour l'affichage.
          ça marche pour certaines personnes
        2. Oui je l'ai fait.
        3. htmlspecialchars( $text, ENT_COMPAT, "UTF-8") ne m'a pas résolu le problème.
      3. Remplace
        strpos, strlen, strpos, strtoupper, strtolower, split, substr
        par
        mb_strpos, mb_strlen, mb_strpos, mb_strtoupper, mb_strtolower, mb_split, mb_substr
        1. J'avais un soucis, ça marchait sur mon serveur local de developpement mais pas sur le serveur en production.
          $search = télé
          mb_strtolower($search)=t?l?
          j'ai trouvé mb_strtolower($search, 'UTF-8')=télé

          C'est casse-pied ces problèmes d'encodage. On choisi utf8 pour pas avoir de soucis de compatibilité et voilà....

          c'est dur a faire une signature ;)
          1. même chose pour
            $debut=mb_strtoupper($sup_accent, 'UTF-8');

            $nbe=mb_strwidth($string, "UTF-8");

            $fin=mb_substr($string,1,$nbe, "UTF-8");