Précédent   Forum des professionnels en informatique > Autres langages > Pascal > Lazarus
Lazarus Forum d'entraide sur Lazarus, l'EDI RAD multiplateforme basé sur Free Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 26/02/2010, 17h46   #1
Invité de passage
 
Inscription : décembre 2004
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 17
Points : 1
Points : 1
Envoyer un message via MSN à supercyprien
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.

Dernière modification par Alcatîz ; 27/02/2010 à 22h46. Motif: préfixe
supercyprien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2010, 23h12   #2
Invité de passage
 
Inscription : décembre 2004
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 17
Points : 1
Points : 1
Envoyer un message via MSN à supercyprien
Je viens s'essayer un
Code :
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 ?
supercyprien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2010, 23h42   #3
Expert Confirmé
 
Inscription : août 2006
Messages : 3 120
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 120
Points : 3 237
Points : 3 237
Voa,

Que contenait ta chaine, et quel est le résultat obtenu ?
__________________
La grandeur de l'homme se mesure à la taille de ses cimetières militaires.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2010, 11h38   #4
Invité de passage
 
Inscription : décembre 2004
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 17
Points : 1
Points : 1
Envoyer un message via MSN à supercyprien
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 ???
supercyprien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2010, 14h45   #5
Membre du Club
 
Inscription : janvier 2009
Messages : 48
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 48
Points : 48
Points : 48
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 :
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;
theodp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2010, 15h20   #6
Expert Confirmé
 
Inscription : août 2006
Messages : 3 120
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 120
Points : 3 237
Points : 3 237
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 ?
__________________
La grandeur de l'homme se mesure à la taille de ses cimetières militaires.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2010, 23h55   #7
Invité de passage
 
Inscription : décembre 2004
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 17
Points : 1
Points : 1
Envoyer un message via MSN à supercyprien
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.
supercyprien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 08h15.


 
 
 
 
Partenaires

Hébergement Web