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 :

Récupérer données d'un fichier CSV encodé en UTF-8 avec accents


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 240
    Points : 81
    Points
    81
    Par défaut Récupérer données d'un fichier CSV encodé en UTF-8 avec accents
    Bonjour,

    Je tente depuis 2 jours de récupérer des données d'un fichier csv encodé en UTF8.

    Le probleme est que je n'arrive pas à récupérer les accents de façon correct pour ensuite les supprimer.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function encode($contenu) 
    	{
    $contenu =strtr($contenu,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
    		$contenu = eregi_replace("[^a-z0-9]"," ",$contenu);
    		$contenu = trim(strtolower($contenu));
    		$contenu = preg_replace ("/\s+/", " ", $contenu);
    		return $contenu;
    	}
     
    $txt_tags = encode(utf8_decode(addslashes($data[$cible_tag])));
    Et voici par exemple un résultat avec la fonction encode :
    coupe ajusta e cuir souple col montant court avec bande d arra t 2 poches

    Et sans :
    classic Ben Sherman checkered pattern, Logo brodé à l\'arrière, 100% cotonclassic

    J'ai essayé tout un tas de fonction ou même de encoder ma page php en ISO-8859-1 mais rien n'y fait ...

  2. #2
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 36
    Points : 48
    Points
    48
    Par défaut
    Salut,

    Pourquoi utiliser ta fonction "encode", la fonction "utf8_decode", elle te donne quoi ?

    Et la fonction "utf8_encode" après ?

    L'une des deux devrait régler ton problème, pas besoin de rajouter ta fonction je pense.

  3. #3
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    la fonction "strtr" ne fonctionne pas avec les encodages multi-octets
    tu peux par exemple utiliser ce code pour enlever les accents :
    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
            $texte = str_replace(
                array(
                    'à', 'â', 'ä', 'á', 'ã', 'å', 
                    'î', 'ï', 'ì', 'í', 
                    'ô', 'ö', 'ò', 'ó', 'õ', 'ø', 
                    'ù', 'û', 'ü', 'ú', 
                    'é', 'è', 'ê', 'ë', 
                    'ÿ', 'ý', 
                    'ç', 'ñ', 'š', 'ž', 'µ', 
                    'æ', 'œ', 'ß', 'ð', 'þ', 
                ),
                array(
                    'a', 'a', 'a', 'a', 'a', 'a', 
                    'i', 'i', 'i', 'i', 
                    'o', 'o', 'o', 'o', 'o', 'o', 
                    'u', 'u', 'u', 'u', 
                    'e', 'e', 'e', 'e', 
                    'y', 'y', 
                    'c', 'n', 's', 'z', 'u', 
                    'ae', 'oe', 'ss', 'dh', 'th', 
                ),
                $texte
            );
    GNAP !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 240
    Points : 81
    Points
    81
    Par défaut
    Merci beaucoup pour vos réponses

    @badajoz : J'utilise cette fonction car elle effectu un traitement complet utile pour mon system ( tout en minuscule, suppression des accents, des caractères spéciaux ... )

    J'ai déjà essayé utf8_encode et utf8_decode sans succes ...

    @nosferapti : Je vais essayer d'utiliser str_replace, mais à partir du moment ou mon résultat est de cette forme :

    classic Ben Sherman checkered pattern, Logo brodé à l\'arrière, 100% cotonclassic

    Comment les accents vont être détectés ?

  5. #5
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par Overstone Voir le message
    classic Ben Sherman checkered pattern, Logo brodé à l\'arrière, 100% cotonclassic
    c'est parce que tu regardes la chaine de caractères en ISO-8859-1. si tu la regardes en UTF-8 tu verras bien "Logo brodé à l\'arrière"

    est ce que tu as bien compris les différences entre les différents encodages ?
    GNAP !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 240
    Points : 81
    Points
    81
    Par défaut
    Merci beaucoup pour votre aide, j'ai pu résoudre le probleme

    Et surtout prendre le temps de bien comprendre une fois pour toutes la différence entre les différents encodages

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/05/2015, 10h57
  2. Récupérer une donnée d'un fichier CSV
    Par bremer dans le forum Débuter
    Réponses: 4
    Dernier message: 28/01/2014, 15h37
  3. Réponses: 0
    Dernier message: 02/10/2012, 11h23
  4. Réponses: 10
    Dernier message: 19/07/2011, 16h56
  5. [Fichier] Récupérer donnée d'un fichier
    Par johnlehardos dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 11/05/2004, 13h42

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