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 :

Caractères unicode en import-export de fichier Excel


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut Caractères unicode en import-export de fichier Excel
    Bonjour,

    Le projet que je développe traite des fichiers Excel : import Excel vers base de données MySql et export de base de données vers fichier Excel!
    Pour info, on utilise http://code.google.com/p/php-excel-reader

    Le souci c'est au départ pour les caractères étendus (utf-8) comme les cédilles, accentuations, etc. mais j'ai pu résoudre en utilisant utf8_encode à l'import et utf8_decode à l'export!

    Le grand souci maintenant c'est lorsqu'un texte contient un apostrophe unicode ou un "oe" unicode. A l'export, le caractère devient ? dans la cellule Excel. A l'import, le texte se retrouve intercalé par des caractères bizarres!

    Avez-vous déjà rencontré un cas pareil? Quelle est la solution?
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Salut !

    Je suis nouveau en php je tiens à te le préciser.
    J'ai eu approximativement la même erreur que toi. Pour ma part c'était une insertion de .csv dans une base mySql. Pour régler le problème de tous les caractères du genre ç / ' / oe etc j'ai procédé avec la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $search  = array('é','è','É','\'','à','²','ê','û','ô','î','ç') ;
    $replace = array('e','e','E',' ','a','2','e','u','o','i','c');
    $liste2[$i] = str_replace($search, $replace, $liste[$i]);
    Ce n'est p-e pas ce dont tu as besoin, mais vu que tu n'as pas de réponse, je t'en propose une

    En esperant t'avoir aidé, ou donné une quelconque piste pour résoudre ton problème.

    Cordialement

  3. #3
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Merci Byron_1 pour cette réponse mais je n'ai aucun problème pour ces caractères étendus là!

    Je rencontre les bizarreries lorsque la chaîne de caractère comporte des caractères "unicode" comme œ dans œil ou cœur, l'apostrophe autre que Shift+4, etc. Pour l'instant je n'ai rencontré que ces 2 caractères.

    J'ai traité ces 2 problèmes de façon spéciale et c'est résolu maintenant mais je ne sais pas si c'est la meilleure solution. Je cherche l'équivalent unicode de ces caractères et je les remplace par 2 caractères oe pour œ et par l'apostrophe Shift+4 pour l'apostrophe xE2-x80-x99 !

    Code php : 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
    36
    /**
     * Fonction pour traiter le probleme d'exportation Fichier Excel
     * avec les caracteres unicode oe et apostrophe
     * Cette liste n'est pas exhaustive
     *
     * @function ReplaceUnicodeCharsForExportExcel
     * @author Randriano
     *
     */
    function ReplaceUnicodeCharsForExportExcel($string) {
        // oe = sequence xC5-x93 ou 197-147
        $string = str_replace(chr(197) . chr(147), 'oe', $string);
        // apostrophe = sequence xE2-x80-x99 ou 226-128-153
        $string = str_replace(chr(226) . chr(128) . chr(153), '\'', $string);
     
        return $string;
    }
     
    /**
     * Fonction pour traiter le probleme d'importation Fichier Excel
     * avec les caracteres unicode oe et apostrophe
     * Cette liste n'est pas exhaustive
     *
     * @function $string
     * @author Randriano
     *
     */
    function ReplaceUnicodeCharsForImportExcel($string) {
        // REM: tout d'abord les textes avec oe et apostrophe unicode sont 16-bit
        // oe = sequence x53-x01 ou 83-1
        $string = str_replace(chr(83) . chr(1), 'oe', $string);
        // apostrophe = sequence x19-x20 ou 25-32
        $string = str_replace(chr(25) . chr(32), '\'', $string);
     
        return $string;
    }
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/02/2014, 11h09
  2. [AC-2010] Ou se trouvent les spécifications d'import-export de fichiers Excel ?
    Par dumas.blr dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/09/2013, 14h14
  3. Réponses: 7
    Dernier message: 23/11/2005, 19h20
  4. Réponses: 7
    Dernier message: 04/10/2005, 19h21
  5. importation d'un fichier excel à destination finale : delphi
    Par pier dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 25/09/2005, 00h23

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