IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[CSV] Lecture des accents dans un fichier texte [PHP 4]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [CSV] Lecture des accents dans un fichier texte
    Bonjour à tous,

    Voici mon problème:
    Sur mon site, je permets l'import de fichiers vcard, texte ou csv, comprenant des noms et prénoms, vers ma base de données. J'utilise PHP 4 et une base mysql.

    La base de données est en utf-8 (c'est un besoin car les fichiers importés peuvent être dans toutes les langues)

    Lorsque j'importe des fichiers encodés en UTF-8, aucun problème.
    Lorsque j'importe un fichier texte tout simple, fait dans notepad, les accents ne passent pas.

    Pour lire mon fichier j'utilise la fonction file_get_contents.
    J'ai essayé d'utiliser mb_detect_encoding et mb_convert_encoding pour toujours transformer l'encodage du texte qui ne serait pas en UTF-8 vers l'UTF-8, mais apparemment cela ne passe pas.

    Existe-t'il une bonne façon de faire pour lire un fichier texte dans son encodage et transformer ensuite le contenu en UTF-8???

    Merci de votre aide, j'ai passé des jours dessus sans trouver de solution, malgré tout un tas de tests.

    Salutations.

    Emmanuel

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Essaye ça et tiens nous au courant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    function is_utf8($str) {
        $c=0; $b=0;
        $bits=0;
        $len=strlen($str);
        for($i=0; $i<$len; $i++){
            $c=ord($str[$i]);
            if($c > 128){
                if(($c >= 254)) return false;
                elseif($c >= 252) $bits=6;
                elseif($c >= 248) $bits=5;
                elseif($c >= 240) $bits=4;
                elseif($c >= 224) $bits=3;
                elseif($c >= 192) $bits=2;
                else return false;
                if(($i+$bits) > $len) return false;
                while($bits > 1){
                    $i++;
                    $b=ord($str[$i]);
                    if($b < 128 || $b > 191) return false;
                    $bits--;
                }
            }
        }
        return true;
    }
     
    $monFichier=$path.$insertFile; // ou $monFichier='toto.txt';
    if(file_exists($monFichier)){
    	$content=file($monFichier);
    	while(list($cle,$val)=each($content)){
    		if(!is_utf8($val)){$val=utf8_encode($val);}
    		// gestion des données et insertion dans la base
    	}
    }
    ..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème des accents dans un fichiers text
    Par mo5andes dans le forum C#
    Réponses: 2
    Dernier message: 09/10/2009, 12h22
  2. Ecrire & Lire des énumérés dans un fichier Texte
    Par WebPac dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 11h04
  3. Réponses: 1
    Dernier message: 22/12/2005, 16h45
  4. Réponses: 3
    Dernier message: 27/06/2005, 17h24
  5. Réponses: 3
    Dernier message: 22/02/2004, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo