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

Lazarus Pascal Discussion :

Produire un fichier texte avec un encodage


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Produire un fichier texte avec un encodage
    Salut à tous.

    Voilà : mon code est censé produire un fichier texte destiné à être compilé par un compilateur LaTeX.

    L'utilisateur doit pouvoir choisir entre l'encodage UTF8 et l'encodage ISO-8859-16.

    Si je sais parfaitement comment créer un fichier texte, j'ignore comment spécifier l'encodage à l'enregistrement.

    Dans l'idéal, j'utiliserais un TStringList avec la méthode SaveToFile... Peut-on en modifier l'encodage?

    Merci de vos conseils avisés.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Je viens s'essayer un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    writeln(F,AnsiToUTF8(chaine));
    où F est un textfile. Mais ça ne fonctionne pas. Ca me sort une chaine étrange qui ne se lit ni en UTF-8, ni en ISO-8859-16.

    Y'a vraiment pas moyen de préciser l'encodage que l'on veut ?

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Voa,

    Que contenait ta chaine, et quel est le résultat obtenu ?
    Si les cons volaient, il ferait nuit à midi.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    Pour essayer, la chaine de départ contenait : é è à

    J'ai fait un writeln(F,AnsitoUTF8('é è à')) puis la même chose mais sans le AnsitoUTF8.

    J'obtiens les résultats suivants :
    Lecture en UTF8 :
    Ă© Ăš Ă
    é è à

    Lecture en ISO-8859-16
    Ă© Ăƥ Ă
    Ă© Ăš Ă

    J'en ai déduit que l'écriture se faisait par défaut en UTF8 mais je ne comprends pas pourquoi la conversion d'une chaine en UTF8 ne donne pas le bon résultat.

    Et, d'autre part, pour la seconde partie de mon projet, comment écrire en ISO-8859-16 ???

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 48
    Points : 55
    Points
    55
    Par défaut
    Traduction automatique ;-)

    Avec UTF-8, vous pouvez utiliser tous les caractères possibles. C'est le défaut sous Lazaurs. Alors, pourquoi avez-vous besoin de ISO-8859-16?
    Cela dit, au moins sous Linux, ça devrait travailler avec LConvEncoding comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Button1Click(Sender: TObject);
    var sl:TStringList;
    begin
    sl:=TStringList.create;
    sl.Text:=LConvEncoding.ConvertEncoding('öäüéèà',EncodingUTF8,'ISO-8859-16');
    sl.SaveToFile('/home/theo/convtest1.txt');
    sl.free;
    end;

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Zoi,

    À en croire ton message, tel que je le comprends, la lecture en UTF8 donne le bon résultat.

    Si ce n'est pas le cas, répond plus clairement :
    Citation Envoyé par supercyprien Voir le message
    J'obtiens les résultats suivants :
    Lecture en UTF8 :
    Ă© Ăš Ă
    é è à
    correspond-il à la lecture comme UTF8 ?

    Et pourquoi voudrais-tu qu'une lecture en ISO-8859-16 donne un résultat correct si tu n'as pas écrit avec cet encodage ?
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    En fait je ne connaissais pas l'encodage par défaut. Donc lazarus encode par défaut en utf8, pas besoin de conversion.

    Maintenant, il faut que je puisse changer l'encodage et produire si l'utilisateur en fait la demande, des fichiers texte encodés en iso-8859-16.

Discussions similaires

  1. nommer un fichier texte avec la date du jour
    Par avantoux dans le forum Windows
    Réponses: 4
    Dernier message: 02/02/2006, 09h57
  2. Comment parcourir un fichier texte avec une boucle ?
    Par kikica dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 17h13
  3. Fichier texte avec codage non standard
    Par giloutho dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2005, 19h31
  4. Imprimer un fichier texte avec un script vbs
    Par Persons dans le forum Windows
    Réponses: 3
    Dernier message: 23/12/2004, 16h47
  5. Decoupage d'un fichier texte avec cut
    Par tesla dans le forum Linux
    Réponses: 3
    Dernier message: 28/06/2004, 15h39

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