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 :

Détecte l'encodage d'un fichier MacRoman [Encodage]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 13
    Points
    13
    Par défaut Détecte l'encodage d'un fichier MacRoman
    Bonjour,
    Nouveau sur le forum, j'ai effectué une recherche mais sans succès, donc désolé si le topic existe déjà...

    Voilà mon problème, j'ai développé une appli qui supporte l'import de fichiers CSV, mon problème vient des personnes qui génèrent un fichier CSV à partir de Office Mac 2008 (enregistrer un tableau Excel au format CSV via Excel)

    Ce fichier est au format MacRoman et je voudrait pouvoir détecter ce format pour lui appliquer un traitement de faveur dont j'ai déjà le script (conversion MacRoman -> UTF-8)

    Ma question est : "Comment détecter l'encodage de ce fichier : MacRoman ?"

    Je sais détecter un encodage ISO, UTF-8 avec mb_detect_encoding() mais pour le format Mac je sèche....

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par okiseb Voir le message
    Bonjour,
    Nouveau sur le forum, j'ai effectué une recherche mais sans succès, donc désolé si le topic existe déjà...

    Voilà mon problème, j'ai développé une appli qui supporte l'import de fichiers CSV, mon problème vient des personnes qui génèrent un fichier CSV à partir de Office Mac 2008 (enregistrer un tableau Excel au format CSV via Excel)

    Ce fichier est au format MacRoman et je voudrait pouvoir détecter ce format pour lui appliquer un traitement de faveur dont j'ai déjà le script (conversion MacRoman -> UTF-8)

    Ma question est : "Comment détecter l'encodage de ce fichier : MacRoman ?"

    Je sais détecter un encodage ISO, UTF-8 avec mb_detect_encoding() mais pour le format Mac je sèche....

    Merci
    normalement c'est pareil mb_detect_encoding te revoie quoi ?
    le MacRoman c'est une variante de l'ISO-8859-1

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    mb_detect_encoding($texte,"auto",true) me renvoi rien, il fonctionne avec un CSV en UTF-8 mais pas en MacRoman...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par okiseb Voir le message
    mb_detect_encoding($texte,"auto",true) me renvoi rien, il fonctionne avec un CSV en UTF-8 mais pas en MacRoman...
    rajoute le MacRoman dans la liste

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    ca n'affiche toujours rien, mais ca marche pour l'UTF-8...
    J'ai essayé avec "macintosh" mais rien de mieux...

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par okiseb Voir le message
    ca n'affiche toujours rien, mais ca marche pour l'UTF-8...
    J'ai essayé avec "macintosh" mais rien de mieux...
    fais l'inverse si c'est pas de l'utf-8 fait un utf8_encode


    EDIT : visiblement le MacRoman n'est pas pris en charge : http://www.php.net/manual/fr/mbstrin...-encodings.php

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    donc mb_detect_encoding() n'est pas adapté à mon besoin... arf
    Détecter si c'est de l'UTF-8...
    Mouais sauf que j'ai 3 types de formats possibles :
    UTF-8 : RAS
    ISO-8859-1 : utf8_encode()
    MacRoman : encodage en UTF-8 via une fonction spéciale

    Le problème est que je ne parviens pas non plus à distinguer un fichier Excel CSV en ISO-8859-1 avec mb_detect_encoding()

    Je vais oublier le MacRoman et essayer de détecter le reste et appliquer ma fonction MacRoman->UTF8 en dernier lieu

    Je reviens dès que j'ai pu avancer !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    C'est bon, j'ai une bidouille qui fonctionne pour détecter si un fichier est UTF-8, ISO-8859-1 ou MacRoman :

    <?php
    //Je détecte l'encodage de base
    $encodage =mb_detect_encoding($buffer,'auto',true);
    //Si ce n'est pas de l'UTF-8 je tente une conversion des caractères spéciaux en html
    if($encodage!="UTF-8"){$buffer2=htmlentities($buffer);}
    //Via une fonction je regarde si le résultat est conforme UTF-8
    if(is_utf8($buffer2)==0){
    //Non UTF-8 (le resultat affiche des "?" a la place des caractères spéciaux)
    $buffer=MacRoman_to_utf8($buffer);
    }else{
    //Conforme UTF-8 j'applique la transformation classique
    $buffer=utf8_encode($buffer);
    }
    ?>

    Merci pour l'aide le topic est résolu

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    utilise iconv qui lui gère le MacRoman (a voir pour la gclib)

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

Discussions similaires

  1. [DOM] Récupérer l'encodage d'un fichier xml en php5
    Par Rakken dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/11/2006, 14h31
  2. script windows qui détecte la présence d'un fichier
    Par yannich dans le forum Windows
    Réponses: 1
    Dernier message: 23/08/2006, 18h24
  3. Detecter encodage d'un fichier
    Par gorgonite dans le forum Linux
    Réponses: 2
    Dernier message: 20/08/2006, 12h38
  4. Réponses: 7
    Dernier message: 18/08/2006, 08h09
  5. Comment reconnaitre l'encodage d'un fichier à l'ouverture
    Par Kczav dans le forum Général Python
    Réponses: 3
    Dernier message: 03/01/2006, 08h32

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