Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2433 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  problème encodage

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème encodage

n°1428710
mbarekh
Posté le 21-08-2006 à 16:54:32  profilanswer
 

Bonjour,
j'espèqre que l 'un de vous aura la réponse à ce problème.
J'ai une application écrite en php avec un encodage utf8. J'utilise également une base de données mysql avec un encodage utf8.
Quelque part dans mon code, j'ouvre un fichier csv pour réucupérer les données qu'il y a dedans et les mettre dans la base.
Voici le code:

Code :
  1. /* Connexion bdd */
  2.    include("connexionMySQL.php" );
  3.  
  4. /* On ouvre le fichier à importer en lecture seulement */
  5. $fichier = "monfichier.csv";
  6. if (file_exists($fichier))
  7.      $fp = fopen("$fichier", "r" );
  8. else
  9.      { /* le fichier n'existe pas */
  10.        echo "Fichier introuvable !<br>Importation stoppée.";
  11.        exit();
  12.      }
  13.     $i=0; 
  14. $ligne = fgets($fp,4096); //sauter la premiere ligne (les noms des champs)
  15.     while (!feof($fp)) /* Et Hop on importe */
  16.     { /* Tant qu'on n'atteint pas la fin du fichier */
  17.        $ligne = fgets($fp,4096); /* On lit une ligne */ 
  18.    $i++;
  19.        /* On récupère les champs séparés par ; dans liste*/
  20.        $liste = explode( ";",$ligne); 
  21.    
  22.        /* On assigne les variables */
  23.                 $titre = utf8_encode(htmlspecialchars($liste[5],ENT_QUOTES));
  24.  $objet = utf8_encode(htmlspecialchars($liste[6],ENT_QUOTES));
  25.  $observations = utf8_encode(htmlspecialchars($liste[7],ENT_QUOTES));
  26.  $type_doc = utf8_encode(htmlspecialchars($liste[8],ENT_QUOTES));
  27.  $sous_type_doc = utf8_encode(htmlspecialchars($liste[9],ENT_QUOTES));
  28.        /* Ajouter un nouvel enregistrement dans la table */
  29.        if ($ligne) $result= MYSQL_QUERY('INSERT INTO fiche VALUES("","'.$titre.'","'.$objet.'","'.$observations.'","'.$type_doc.'","'.$sous_type_doc.'" )');
  30.        if(mysql_error())
  31.         { /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
  32.            print "Erreur dans la base de donn&eacute;es : ".mysql_error();
  33.            print "<br>Importation stopp&eacute;e.";
  34.            exit();
  35.         }       
  36.     }


 
Le problème est que tous les champs sont correctement remlis dans la base, sauf sous_type_doc, ou les accents disparaissent. Par exemple "contrat d'achat/de vente" devient "contrat dachat/de vente" .
Je trouve ça pas normal vue que tous les champs ont la même structure.
quelq'un peut m'aider à résoudre ce problème?

mood
Publicité
Posté le 21-08-2006 à 16:54:32  profilanswer
 

n°1428728
supermofo
Hello World !
Posté le 21-08-2006 à 17:13:29  profilanswer
 

salut essaye utf8_decode et htmlentities tu devrais trouver ton bonheur sur la doc php.

n°1428737
mbarekh
Posté le 21-08-2006 à 17:20:25  profilanswer
 

Non je l'ai déjà essayé mais ça ne marche pas :(

n°1428869
Djebel1
Nul professionnel
Posté le 21-08-2006 à 18:47:50  profilanswer
 

Ton fichier csv est enregistré en ISO non ? Si ton script est en utf8, et le fichier analysé en ISO, ça va merder. Dans ce cas il te faut utiliser utf8_encode.
 
J'ai le pbl inverse dans une application : script en ISO et fichier qui peut etre en utf8. Voilà ce que j'ai fait :  

Code :
  1. if ($this->_is_utf8($line)) {
  2.     $line = utf8_decode($line);
  3. }


avec  

Code :
  1. /**
  2.     * Determine si une chaine est en UTF-8
  3.     * fonction cree par le W3C
  4.     *
  5.     * @link http://w3.org/International/questi [...] utf-8.html
  6.     * @param string $string  chaine de caractere a analyser
  7.     * @return bool    vrai si UTF-8, faux sinon
  8.     */
  9.     private function _is_utf8($string)
  10.     {
  11.     return preg_match('%^(?:
  12.     [\x09\x0A\x0D\x20-\x7E] # ASCII
  13.     | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
  14.     | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
  15.     | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
  16.     | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
  17.     | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
  18.     | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
  19.     | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
  20.     )*$%xs', $string);
  21.     }


Message édité par Djebel1 le 21-08-2006 à 18:50:08

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  problème encodage

 

Sujets relatifs
Problème encodage d'un site[MySQL/PHP] problème d'encodage à l'insertion via formulaire
Problème d'encodage avec phpmailerprobléme avec AJAX et encodage
Probleme lors mise a jour de textarea : encodage ?[Résolu] Problème d'encodage de String.
probleme d'encodage sur un caractereGros problème avec les accents avec tinymce (encodage ?)
[JDBC] problème d'encodage de caractères.[Castor] Problème d'encodage
Plus de sujets relatifs à : problème encodage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR