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 Delphi Discussion :

[XE] Comment générer un fichier texte en UTF8 (sans BOM)


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 674
    Points : 7 061
    Points
    7 061
    Par défaut [XE] Comment générer un fichier texte en UTF8 (sans BOM)
    Sous Delphi XE, comment générer un fichier texte en UTF8 (sans BOM) ?

    Dans le projet, auparavant, un simple AssignFile générait des fichiers en UTF8 (sans BOM).
    Depuis peu, il s'est mit à générer des fichiers en ANSI.

    Comment préciser le format ?

    J'ai pensé au AssignFile(F, 'le fichier', CP_UTF8);, mais le troisième paramètre n'existait pas encore avec D XE.
    Partout dans l'aide, j'ai vu que la TStringList était recommandée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       MaStringList.SaveToFile('le fichier', TEncoding.UTF8);
    J'ai tenté, mais ça donne le format UTF8 avec BOM qui ne convient pas.

    Qu'est ce que je pourrais utiliser d'autre ?


  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    je ne sais pas sous XE mais sinon

    https://docwiki.embarcadero.com/Libr...rings.WriteBOM


  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 674
    Points : 7 061
    Points
    7 061
    Par défaut
    Bien vu !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaStringList.WriteBOM := False;
    Juste avec ça, ça semble être bon (dixit notepad++).
    Plus qu'à espérer que le client soit du même avis ...


  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 674
    Points : 7 061
    Points
    7 061
    Par défaut
    Rectification :
    Dans un petit projet de test, ça marche bien.
    Peu importe le contenu enregistré dans le fichier généré, le fichier est bien en UTF-8 sans BOM, comme demandé.

    Par contre, depuis le projet de l'application en question, le fichier généré est en UTF-8 (sans BOM) que s'il y a au moins un caractère étendu à l'intérieur.
    S'il n'y a aucun caractère étendu, le fichier est généré en ANSI, malgré le TEncoding.UTF8.

    Mais, si on autorise le BOM, le fichier est bien généré en UTF-8 (mais avec BOM, ce qui ne convient pas).

    Si quelqu'un a une idée de la raison ...

  5. #5
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    si tu te bases sur ce que te dis Notepad++ c'est normal : sans le BOM il affiche UTF-8 quand il détecte un caractère étendu, sinon la plage de caractères est la classique

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Citation Envoyé par Lung Voir le message
    S'il n'y a aucun caractère étendu, le fichier est généré en ANSI, malgré le TEncoding.UTF8.
    La réponse est dans la question, l'UTF8 entre 0 et 127 c'est ANSI, c'est justement quand on dépasse que l'on passe en multi-octet, c'est donc tout a fait logique que sans BOM, il soit pas possible de détecter la présence UTF8 que lorsqu'il y en a .

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 674
    Points : 7 061
    Points
    7 061
    Par défaut
    ok. pour les infos.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/01/2007, 15h21
  2. Comment générer un fichier texte à partir d'un XML et XSL
    Par Jayceblaster dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/07/2005, 22h42
  3. Réponses: 5
    Dernier message: 16/07/2005, 00h01
  4. Comment créer un fichier texte?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 08/05/2005, 19h53
  5. Comment écrire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    Réponses: 9
    Dernier message: 20/01/2005, 09h00

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