Bonjour,
Comme l'indique le titre, je veux enregistrer un fichier texte en utf-8 mais celui-ci s'enregistre en ansi.
Théoriquement je crois que Lazarus (ma version est la 0.9.30) travaile par défaut en utf8. Je suis sous windows vista.
je recupère en fait les lignes d'un memo que je veux enregistrer sous un fichier texte.
Voici le genre de code :
Je n'ai aucun soucis de génération de fichier. C'est juste que ce dernier est toujours en ansi et que pour des raisons particulieres (traitement web) il faut qu'il s'enregistre en UTF8.
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 procedure TForm1.ButtonCreeFichierClick(Sender: TObject); var memotemp : Tmemo; begin memotemp:=Tmemo.create(Self); memotemp.Lines.Add (AnsiToUtf8('TITRE')); memotemp.Lines.Add (AnsiToUtf8('coucou')); memotemp.Lines.Add (AnsiToUtf8('j ai mis un AnsiToUTF8 mais j ai aussi testé sans...')); if SaveDialog1.Execute then begin SaveDialog1.initialdir:=ExtractFilepath(Application.ExeName); SaveDialog1.title:=TXT_Savedialog1; // voici trois types que j'ai testé mais cela revient au même memotemp.Lines.SaveToFile(SaveDialog1.FileName); //memotemp.Lines.SaveToFile(UTF8ToSys(SaveDialog1.FileName)); // idem //memotemp.Lines.SaveToFile(SystoUTF8(SaveDialog1.FileName)); // idem end; memotemp.destroy; end;
J'ai ajouté des AnsiToUtf8 lors de mes ajouts au memo au cas où cela viendrai de là, j'ai testé avec des UTF8ToSys et SystoUTF8 au cas où.
Et... rien !
Donc je rate un truc sûrement tout bête mais je ne vois pas quoi. Et dans mon TSaveDialog je ne vois pas d'option pour le type de codage.
Je suis preneur de toute solution ou début de solution.
Merci d'avance.
Patrick
Partager