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 :

Encodage d'un fichier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut Encodage d'un fichier
    salut,

    j'ai une appli qui crée des fichiers avec du texte dedans. je souhaite préciser que l'encodage de ces fichiers doit etre de l'utf-8. Vous savez comment on peut faire?

    je crée mes fichiers de la maniere suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $Ffile = fopen($file,'w');
    fwrite($Ffile, $data);
    fclose($Ffile);
    merci

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    J'aurais tendance à dire qu'il n'y a rien à faire...

    Tu tournes sur windows ou *nix ?

  3. #3
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Ne peux-tu pas encoder tes données avant de les écrire ?
    Exemple :
    fwrite($file,utf8_encode($data));

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut
    mon poste de test est sous windows, la prod sous solaris.

    et non fwrite($file,utf8_encode($data)); ne fonctionne pas. ca encode surement le contenu du fichier en utf-8 mais ce fait pas pour autant du fichier et un fichier reconnu en utf-8. J'imagine que pour cela il faudrait indiquer quelque part dans les meta données du fichier que c'est de l'utf-8, mais je ne sais pas comment faire...

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Normalement, c'est les données qui sont contenues dans le fichier qui font que le fichier sera de l'utf8 ou pas.

    Sous windows, essaie d'ajouter le flag 'b' lors de l'ouverture de ton fichier, sait on jamais

    Chez moi, sous *nix le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    $a = "l'été";
     
    $f = fopen('toto', 'w');
    fwrite($f, $a);
    fclose($f);
    ?>
    me donne un fichier utf8 (vérifiable en faisant :
    (Par défaut tout mon environnement (console, scripts, ...) est utf8)

    Par contre si je modifie le code de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    $a = utf8_decode("l'été");
     
    $f = fopen('toto', 'w');
    fwrite($f, $a);
    fclose($f);
    ?>
    alors le resultat de la commande me donne iso-8859-1, ce qui est conforme au résultat attendu.
    Pas besoin de metadonnée.

    Si la solution proposée ci-dessus ne marche pas, alors essaie de rajouter le BOM. Solution cracra qui est plus source de problèmes qu'autre chose...
    Il te suffit d'écrire les octets suivants en tête de ton fichier:

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut
    effectivement la 2eme solution fonctionne, mais pas la 1ere. Je peux savoir pourquoi tu dis que la 2eme solution est source de probleme?
    et le BOM, c'est quoi?

Discussions similaires

  1. Spécifier le format d'encodage d'un fichier de sortie
    Par strat0 dans le forum VBScript
    Réponses: 5
    Dernier message: 29/12/2006, 15h50
  2. [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
  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