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 à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.