Bonjour,
Le 29/08/2018 à 23:59, Cédric Giraud a écrit :
La macro parse les lignes et les écrit à la suite dans un fichier .json
propre à chaque langue en créant la bonne indentation et le bon formatage
du langage.
le problème d'encodage vient de là :
open Fichier for output as #1
[...]
print #1, Resultat
close #1
Vous utilisez les primitives standard du LibO Basic pour écrire dans le
fichier. De fait, vous n'avez pas accès à la méthode d'encodage des
caractères.
Pour avoir la pleine maîtrise de cet aspect, je vous conseille
d'utiliser l'API relative aux flux.
Dans ce cadre, vous ferez appel à deux services :
-- com.sun.star.ucb.SimpleFileAccess
qui fournit l'accès au fichier
-- com.sun.star.io.TextOutputStream
qui permet l'accès en écriture à un fichier texte (comme son nom l'indique)
Ce dernier service fournit une méthode setEncoding() qui vous permet de
choisir l'encodage voulu. Les valeurs possibles figurent dans la page
web https://www.iana.org/assignments/character-sets/character-sets.xhtml
(colonne Name)
-> Sachez cependant que UTF-8 est l'encodage par défaut proposé par
TextOutputStream.
Par exemple, pour écrire un fichier texte encodé en UTF-8 via l'API flux
en Basic, vous auriez un code comme celui-ci :
8< ----------------------------------------------------------------
Dim oSFA As Object
Dim oOutText As Object
Dim FichierURL As String
oSFA = createUNOService("com.sun.star.ucb.SimpleFileAccess")
FichierURL = ConvertToURL("C:\chemin\vers\MonFichier.txt")
oOutText = createUNOService("com.sun.star.io.TextOutputStream")
oOutText.setOutputStream(oSFA.openFileWrite(FichierURL))
'écrire (les délimiteurs de ligne doivent être spécifiés)
'[ici CRLF (Windows)]
oOutText.WriteString("Hello World" & Chr(13) & Chr(10))
oOutText.WriteString("Ligne 2" & Chr(13) & Chr(10))
'vider les tampons et fermer
oOutText.flush
oOutText.closeOutput()
--------------------------------------------------------------- >8
Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux
--
Envoyez un mail à [email protected] pour vous désinscrire
Les archives de la liste sont disponibles à
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy