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] Problème d'encodage


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut [CSV] Problème d'encodage
    Salut,

    Je viens de chercher réponse à mon problème pendant un moment et ne trouvant pas, je vous l'expose.
    J'ai un script php chargé de fournir sous la forme d'un CSV une partie d'une base de données avec force download.
    Sous PC, aucun problème, tout marche super bien. Seul souci, la personne qui a besoin de ce CSV est sous MacOS : l'encodage ascii n'est pas le même notemment pour les accents...
    Avez-vous une idée d'une solution rapide pour que sous MacOS j'ai les bons accents et pas des caractères grecs? style un type Mime?
    (c'est pas grave si sous PC ça devient illisible)
    Merci
    Simo'

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Pour que ce soit compatible, il faut que le fichier soit au format UTF8... maintenant, si tu veux génerer un fichier texte au format UTF8, il te faut ajouter EFBBBF dans l'entete... etrange n'est-ce pas ? en plus evidemment d'encoder les données en utf8

    Reste a savoir si l'import dans une base a partir d'un utf8 se passera correctement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $out = fopen($fichier,"wb");
    // encodage en utf8 du contenu
    $contenu=utf8_encode($contenu);
    // ajout de l'en tete pour définir le format
    $contenu="\xEF\xBB\xBF".$contenu;
    fputs($out,$contenu);
    fclose($out);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    ok, merci, je vais de suite tester ça.
    C'est quand même un peu tiré par les cheveux... Quand je dis que la calvicie me guete lol
    Simo'

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Ah benh non, en UTF8, ça marche pas.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Voici un bout de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download; charset=UTF-8");
    header("Content-Type: application/octet-stream; charset=UTF-8");
    header("Content-Type: application/download; charset=UTF-8");
    header("Content-Disposition: attachment; filename=exportation_".date("Y-m-d").".csv; charset=UTF-8");
    echo utf8_encode("contenu;de;mon;csv;");
    Mais le résultat reste : études au lieu d'études

    Seul point positif, c'est pareil sous MacOS et PC

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 150
    Points : 186
    Points
    186
    Par défaut
    et avec un charset ISO-8859-1 ça ne marche pas ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Malheureusement non.
    Rhhhaaaa ce MacOS

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    hum...
    t'as essayé de faire un :

    avant le echo utf8_encode(...) ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Oui mais quand je fais ça, j'ai juste 3 caractère en plus dans le fichier.
    Dois-je le faire juste avant chaque echo ou juste après les header() (comme actuellement)? Est-ce qu'avec ça je dois préciser le charset dans les header()?
    Simo'
    PS: ce soir j'me fait la tournée des bars si ça marche avant la débauche lol

  10. #10
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    il faut le faire une seule fois entre les header et le premier echo.

    tu peux aussi essayer de mettre un type mime style "html/text" dans un content-type, mais ca risque de ne plus proposer ton fichier automatiquement en téléchargement et l'afficher dans le browser...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    j'ai essayé en le mettant qu'une seule fois mais sans succès. Pour le type mime, je perd en effet le force download...
    Je me suis toujours demandé pourquoi y a fallu un jour inventer les accents... en plus je m'y mélange toujours dans leur sens...

  12. #12
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Tu peut tenter une convertion en MacRoman (jeu de caractère utilisé sous MacOS)

    Quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iconv("ISO-8859-1","MacRoman", $ta_chaine);
    Mais je suis curieux de savoir avec quoi tu ouvres le CSV...

    Doc Php iconv

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    En fait mon CSV est créé à la volé avec le résultat d'un xml et de données mysql.
    J'ai toujours pas de solution qui marche, Efferalgan quand tu nous prend...

    Simo'

  14. #14
    Membre régulier Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Points : 90
    Points
    90
    Par défaut
    Fladnag Merci c'est exactement ça ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page="\xEF\xBB\xBF".$page;

Discussions similaires

  1. Problème d'encodage dans l'importation d'un .csv
    Par Sayanel01 dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/04/2015, 22h17
  2. Problème d'encodage de fichier (.csv-->.sql, .sql-->.csv)
    Par croustibapt dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 09/07/2009, 10h17
  3. CSV : problème d'encodage
    Par alband85 dans le forum C#
    Réponses: 3
    Dernier message: 16/07/2008, 09h09
  4. Problème d'encodage sur MySql 4.1
    Par Blanchet dans le forum Outils
    Réponses: 1
    Dernier message: 04/12/2005, 04h53
  5. [XML::PARSER] Problème d'encodage
    Par frangin2003 dans le forum Modules
    Réponses: 13
    Dernier message: 05/09/2005, 14h59

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