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 :

Fichier txt. UTF8


Sujet :

Langage Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Août 2003
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 207
    Points : 91
    Points
    91
    Par défaut Fichier txt. UTF8
    Bonjour à tous,

    J'en registre des données UTF8 dans un fichier txt.
    Je suis obligé d'insérer en 1ère ligne du fichier la séquence de caractères suivantes si je veux l'imprimer correctement.

    #$EF #$BB #$BF

    Ça marche mais j'ai ces 3caracteres qui s'impriment aussi.

    Comment puis je faire pour que cette signature UTF8 soit prise en compte dans mon fichier txt sans qu'elle soit visible ou imprimable ?

    Merci d'avance
    Wilco

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Bonjour,

    Pour répondre à ton besoin j'aurai besoin de connaître certains détails.

    Comment tu enregistre ? Est-ce par programme ou tu modifie un fichier texte à la main avec un outil quelconque ?

    Pareil pour l'impression, est-ce toi qui la gère où bien tu demande un à programme de le faire ?

    En tout cas, je pense que si ces caractères apparaissement en dur, cela signifie qu'il ne sont pas considérés comme étant la "signature UTF-8" de ton document.

    D'ailleurs l'utilisation de l'UTF-8 est-elle obligatoire ?

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Août 2003
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 207
    Points : 91
    Points
    91
    Par défaut
    Merci Popo pour ce début de réponse.

    J'ai besoin de l'UTF8 et Voici le code que j'utilise pour créer mon fichier texte.

    Code : 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
     
    const
      UTF8ByteOrderMark = = #$EF#$BB#$BF;    // BOM Signature UTF8
    var
       nCount: Integer;
       TXTString: String;
       TXTBytes: Array[0..999999] of Byte;
       TXTRawByteString: RawByteString; 
    begin
     
    {TXTString  contient le texte en unicode (Document avec des polices en  différentes langues : Russe, Chinois, Japonais et Français}
     
    TXTStream := TFileStream.Create('c:\tmp\TxtFile.txt', fmCreate );
     
     // On convertit l'unicode en UTF8 
    TXTRawByteString := UTF8Encode(TXTString);  
     
    ncount := length(TXTRawByteString );
    Move(TXTRawByteString[1], TXTBytes[0], ncount);
     
    TXTStream .Write(UTF8ByteOrderMark,3);   
    TXTStream .WriteBuffer(TXTBytes, ncount);
    ZDocStream.Free;
    Merci d'avance pour votre aide,
    Wilco

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Plus simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var
      sl :TStringList;
     
    sl.Add(TXTString);
    sl.SaveToFile('c:\tmp\TxtFile.txt', TEncoding.UTF8);

  5. #5
    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 : 54
    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 430
    Points
    28 430
    Par défaut
    à vu de nez je dirais que ceci TXTStream .Write(UTF8ByteOrderMark,3); enregistre les 3 premiers octets de l'adresse de la chaîne dans le fichier.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Plus simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var
      sl :TStringList;
     
    sl.Add(TXTString);
    sl.SaveToFile('c:\tmp\TxtFile.txt', TEncoding.UTF8);
    Tout dépend de la version utilisée. Delphi 7, ne propose pas la version de SaveToFile avec l'option de l'encodage.

    Wilco, ta constante UTF8ByteOrderMark ressemble beaucoup à une simple chaîne.
    D'ailleurs ceci ne compile pas chez moi.
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const
      UTF8ByteOrderMark = = #$EF#$BB#$BF;    // BOM Signature UTF8

Discussions similaires

  1. format utf8 dans un fichier txt
    Par jj4822 dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/09/2010, 20h41
  2. [SQLServer]Script import fichier .txt
    Par Jenbi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/08/2006, 16h49
  3. ouverture de fichier txt
    Par juguul dans le forum MFC
    Réponses: 11
    Dernier message: 18/12/2003, 09h44
  4. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08
  5. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19

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