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 :

Lecture de fichier UTF-8


Sujet :

Langage Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut Lecture de fichier UTF-8
    Bonjour,

    Aucune question dans ce post, juste une info pouvant être utile aux ignorants comme moi !

    Soit un fichier xml encodé en UTF-8 sans BOM !

    Si je charge le fichier avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Contenu := TFile.ReadAllText(FichierContent, TEncoding.UTF8);
    les 3 premiers caractères de mon fichier disparaissent. Du coup, mon xml est daubé et tout le traitement suivant échoue.

    Par contre, la lecture avec un stream rend le bon résultat. Alors, pour assurer le coup et vérifier la différence, j'ai codé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      Contenu := TFile.ReadAllText(FichierContent, TEncoding.UTF8);
      if LeftStr(Contenu, 3) <> '<?x' then
        with TStringStream.Create('', TEncoding.UTF8) do
        begin
          LoadFromFile(FichierContent);
          Contenu := DataString;
          Free;
        end;
    ça m'a couté une demi-journée

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 661
    Points : 3 630
    Points
    3 630
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Le TEncoding.UTF8 correspond aux fichiers UTF-8 avec le BOM (Byte Order Mark). Il s'agit des 3 premiers caractères du fichier. C'est pour cela qu'il a supprimé les 3 premiers caractères de ton fichier : il a "cru" que c'était le BOM.
    Il y a le sujet suivant sur les forums Embarcadero : https://forums.embarcadero.com/threa...hreadID=112112.
    Il faut faire une classe qui dérive de TUTF8Encoding et surcharge la méthode GetPreamble afin qu'elle un TBytes vide.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    J'avais bien compris qu'il s'agissait du BOM qui n'était pas présent.
    Mais je ne voyais la solution pour contourner ça avec TFile.ReadAllText

    Je vais étudier le lien. Merci

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

Discussions similaires

  1. Lecture fichier UTF-8
    Par JM-R dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/12/2008, 16h44
  2. Lecture du caractères UTF-16 fichier
    Par Jamlan dans le forum C
    Réponses: 4
    Dernier message: 27/12/2006, 14h41
  3. Lecture/écriture de fichiers UTF 16 LE
    Par Pill_S dans le forum Delphi
    Réponses: 8
    Dernier message: 19/12/2006, 18h08
  4. [ANT] Pb lecture fichier UTF-8
    Par tnodev dans le forum ANT
    Réponses: 1
    Dernier message: 23/04/2006, 10h52
  5. Lecture de fichier utf-8
    Par cronos6 dans le forum Général Python
    Réponses: 10
    Dernier message: 07/04/2006, 12h00

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